我正在使用devise来处理我的用户身份验证,并且在我的用户模型中,我已声明每个用户has_one:role。
我使用另一个表来保存我的所有用户角色/权限,我想知道如何更新角色?
编辑 - 这是我的用户模型
has_one :role, :dependent => :destroy
accepts_nested_attributes_for :role, :allow_destroy => true
attr_accessible :stuff.... :role
我的榜样
belongs_to :user
我已将此添加到我的表单中:
<%= f.fields_for :role, Role.new do |r| %>
<li class="full_width">
<%= r.label "User type" %>
<%= r.select(:status, %w[member artist commercial],{:include_blank => false}) %>
</li>
<% end %>
但它永远不会保存角色记录,我猜它是因为用户模型没有attr_accessible:角色所以我设置了它,现在当我尝试保存时我得到一个AssociationTypeMismatch错误
编辑 - 添加了accepts_attributes_for,现在我没有收到错误但是角色记录没有保存。控制台显示
警告:无法批量分配受保护的属性:role_attributes
答案 0 :(得分:1)
attr_accessible :role_attributes
答案 1 :(得分:0)
从您粘贴的代码段中,您不清楚在哪里构建新角色与用户之间的关联。您可能需要执行@ user.build_role(...)或@ role.build_user(...)之类的操作,以便在保存之前关联用户和角色。