私は非常に迷惑で、私のレールプロジェクトのバグを見つけ出すのは難しいです。Railsモデルの属性が0でないと思われる
モデルとそれらの関係の束を作成した後、それらをリストしたいと思います。
でも、「NilClassをdupできません」というエラーが発生します。つまり、サーバーを再起動するまでです。それから私はそれらをちょうど良い名前を挙げることができます
この問題をデバッグすると、ある属性の値を返すときにモデルのいずれかのメソッドでエラーが発生することがわかります。メソッドにブレークポイントがあり、デバッガでこれを取得します。
(rdb:5) self #<Bar id: 1037, foo: 2237, created_at: "2009-06-09 19:52:11", updated_at: "2009-06-09 19:52:47"> (rdb:5) foo TypeError Exception: can't dup NilClass (rdb:5) attributes[:foo] nil (rdb:5) attributes["foo"] 2237
ページをリロードしても問題ありません。私はサーバーを再起動するまで同じエラーが発生します。
私のモデルは基本的に(エラーがメソッドのバズで発生)のようになります:
class FooBar < ActiveRecord::Base
belongs_to :foo, :class_name => "BarFoo", :foreign_key => "foo", :dependent => :destroy
belongs_to :bar, :class_name => "BarFoo", :foreign_key => "bar", :dependent => :destroy
validates_presence_of :foo, :on => :create
def baz
[foo, bar].compact
end
end
私のスキーマは次のようになります。
create_table "foo_bar", :force => true do |t|
t.integer "foo"
t.integer "bar"
t.datetime "created_at"
t.datetime "updated_at"
end
更新:
私が入る前にfooと "foo"が同じではないことを指摘している回答はこれ以上ありません。私はそれらが同じではないことを認識していますが、ここで問題にはなりません。
そして、read_attribute( "foo")がread_attribute(:foo)と同じものを返すことを確認しました。そしてself [:foo]とself ["foo"]もそうです。これらのどれもnilを返しません。しかし、彼らはfooの代わりにfooのidを返します。
モデルのデータベーススキーマ、fooメソッド定義、およびfooを設定するコードの詳細を提供する必要があります。 –