我正在将应用程序从rails3.2.13迁移到rails4.0.0-rc1。我有以下代码:
class Foo < ActiveRecord::Base
has_many :bars
before_create :build_bars
private
def build_bars
self.bars.build({name: 'Bar 1'})
self.bars.build({name: 'Bar 2'})
end
end
上面的代码在rails3中工作,但在rails4中创建了空记录。一些尝试&amp;控制台中的错误显示,确实没有分配属性。
f = Foo.new
f.bars.build({name: 'Bar'})
=> #<Bar id: nil, name: nil>
建立关联并将它们与父记录一起保存的正确方法是什么?
答案 0 :(得分:1)
我认为@Mischa是对的。我一直在将我的应用程序迁移到rails4,它可以工作:
user.authorizations.build provider: "bla"
=> #<Authorization id: nil, provider: "bla", uid: nil, user_id: 1, created_at: nil, updated_at: nil>
您可以查看我所做的更改:https://github.com/phoet/on_ruby/pull/83/files#L23L59
最有可能是它正在删除:
# Mass assignment settings
config.active_record.whitelist_attributes = true