在我的Rails应用程序中,我有两个模型,Estimate
和Client
,它们都与State
有belongs_to
关系(如在美国各州)。
如果我像这样创建一个简单的散列:
properties = {:state => State.first}
…我可以像这样在Rails控制台中构建一个客户端:
c = Client.new(properties)
…并且它显示state_id
的1
,如预期的那样。
然而,如果我尝试同样的估算,像这样:
e = Estimate.new(properties)
…它从不设置state_id
,所以我不能保存关联。
Estimate
和Client
的表具有相同的state_id
列(int 11
)。联系是一样的。State
对象也一样
是什么导致了这种差异?
更新这个问题是attr_accessible
正如Misha指出的。我们发现的另一个症状是Estimate.state = State.first
返回NoMethodError: undefined method state=
您是否在Estimate
模型中设置了attr_accessible
?如果是这样,state
可能无法访问,只能这样设置:
e = Estimate.new
e.state = State.first
更新注意state=
是一个实例方法,而不是一个类方法。
这个不工作:
Estimate.state = State.first
This does work:
e = Estimate.new
e.state = State.first