我有模型Foo
和Bar
。 Bar
列foo_id
。
当我致电Bar.foo_id
时,我收到错误missing attribute: foo_id
请记住,这不是未定义的方法错误,列肯定在db中。造成这种情况的常见原因是什么?
由于
答案 0 :(得分:37)
可能它与您的查找方法有关?例如,你做了一个:在一个查找中选择:
Foo.find(:all, :select => "firstvar, secondvar")
在这种情况下,即使你有foo_id定义
,你也只能访问firstvar和secondvar希望它有所帮助! =)
答案 1 :(得分:2)
你在打电话吗
Bar.foo_id
或
bar = Bar.new
bar.foo_id
除非您有Bar
的类变量,否则需要查看Bar实例上的foo_id
。我希望有所帮助。欢呼声。
答案 2 :(得分:0)
这不时发生在我身上。我的原因几乎总是在类中指定.select()的字段上一个被遗忘了很久的finder方法,并且缺少的属性(通常在定义了finder之后很久才添加)现在在应用程序中的某个地方被调用,但未在该.select中指定()。
该错误很常见,足以在Rails指南中赢得警报:“ Be careful because ...”