在我的Rails应用中,我有两个模型,Estimate
和Client
,它们与belongs_to
的关系State
(与美国各州一样)。
如果我创建一个这样的简单哈希:
properties = {:state => State.first}
...我可以像这样在Rails控制台中构建一个客户端:
c = Client.new(properties)
...按预期显示state_id
1
。
然而,如果我尝试使用Estimate,就像这样:
e = Estimate.new(properties)
... 它永远不会设置state_id
,因此我无法保存关联。
Estimate
和Client
的表格具有相同的state_id
列(int 11
)。这种关联是一样的。 State
对象是相同的。
可能导致这种差异的原因是什么?
Misha指出,这个问题是attr_accessible
。我们发现的另一个症状是Estimate.state = State.first
返回NoMethodError: undefined method state=
答案 0 :(得分:2)
您是否在attr_accessible
模型中设置了Estimate
?如果是这样,state
可能无法访问,只能按此设置:
e = Estimate.new
e.state = State.first
请注意,state=
是实例方法,而不是类方法。
不有效:
Estimate.state = State.first
确实工作:
e = Estimate.new
e.state = State.first