为什么我的关联对象id没有被填充?

时间:2011-04-26 20:46:20

标签: ruby-on-rails ruby-on-rails-3 activerecord

在我的Rails应用中,我有两个模型,EstimateClient,它们与belongs_to的关系State(与美国各州一样)。

如果我创建一个这样的简单哈希:

properties = {:state => State.first}

...我可以像这样在Rails控制台中构建一个客户端:

c = Client.new(properties)

...按预期显示state_id 1

然而,如果我尝试使用Estimate,就像这样:

e = Estimate.new(properties)

... 它永远不会设置state_id ,因此我无法保存关联。

EstimateClient的表格具有相同的state_id列(int 11)。这种关联是一样的。 State对象是相同的。

可能导致这种差异的原因是什么?

更新

Misha指出,这个问题是attr_accessible。我们发现的另一个症状是Estimate.state = State.first返回NoMethodError: undefined method state=

1 个答案:

答案 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