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
名称,必须在保存r
或p
之前调用。运行上述代码后调用它会引发undefined method `name' for nil:NilClass
错误。
答案 0 :(得分:0)
那么:
p = r.privileges.build(role: r)
要使其正常工作,您应该在attr_accessible列表中启用:role
。