2009-08-25 49 views
6

私はモデルFooBarを持っています。 Barの列にはfoo_idがあります。 私がBar.foo_idと呼ぶとエラーが出るmissing attribute: foo_idアクティブレコードの属性がありません

これは未定義のメソッドエラーではなく、列は確かにdbにあることに注意してください。これの一般的な原因は何ですか?

おかげであなたはBarのためのクラス変数を持っていない限り

+0

バーをどのようにロードしていますか? –

答えて

35

の方法がありますか?たとえば、あなたがた:検索で選択します。その場合は

Foo.find(:all, :select => "firstvar, secondvar") 

、あなたは

を定義しfoo_idているにもかかわらず、firstvarとsecondvarのみアクセスすることができ、それがお役に立てば幸い! =)

+1

私はdefault_scopeを持っていました:includes => [:model1、:model2] defined ..代わりに私はすべての必要が含まれてカスタムスコープを使用しました。 –

+0

私の場合、問題はオブジェクトがキャッシュされていて、新しい属性を持たない古いバージョンを使用していたということでした。キャッシュがクリアされると、物事は期待通りに機能しました。 –

2

あなたは

Bar.foo_id 

または

bar = Bar.new 
bar.foo_id 

を呼び出しているが、あなたは、バーのインスタンスにfoo_idを見てする必要があります。私はそれが助けて欲しい乾杯。

関連する問題