在新实例化的关联“子”对象上调用“.parent”将返回“nil”

时间:2012-09-11 09:09:41

标签: ruby-on-rails activerecord has-many

r = Role.new(name: 'Admin')
=> #<Role id: nil, name: "Admin">
p = r.privileges.build
=> #<Privilege id: nil, role_id: nil>
p.role
=> nil

Privilege的实例方法取决于相关的role名称,必须在保存rp之前调用。运行上述代码后调用它会引发undefined method `name' for nil:NilClass错误。

1 个答案:

答案 0 :(得分:0)

那么:

p = r.privileges.build(role: r)

要使其正常工作,您应该在attr_accessible列表中启用:role