使用 Role Model 和 simple_forms 分配角色

Using Role Model and simple_forms to assign roles

首先,我正在使用 Devise、Cancan、Role Model 和 simple_form。一切似乎都可以使用权限等等。我似乎无法做的是创建一个表单,以便我可以为用户分配角色。

这是我目前的情况:

<%= simple_form_for(@profile.user) do |f| %>
<%= f.input :roles_mask, as: :check_boxes, collection: User.valid_roles, :checked => [ 'member' , true] %>
<%= f.button :submit %>

这正确显示了复选框,最后一部分将一个标记为 true。我不确定如何让它标记应该标记的角色。我随机选择了一个进行测试 另外,如果我发送它进行更新,似乎什么也没有发生。我更新了,就像我通常将我的参数限制为 roles_mask 变量一样。

def update
if @user.update(params.require(:user).permit(:roles_mask))
    flash[:notice] = "Permissions updated."
    redirect_to profile_path(@user.profile_id)
else
    render 'edit'
end

我不知道我做错了什么。即使我能让他们更新。不显示当前角色并不是什么大问题。

您不需要直接访问roles_mask 属性,只需将角色数组分配给roles 属性。示例:

= f.input :roles, collection: User.valid_roles, as: :check_boxes, checked: @user.roles, label_method: proc {|l| User.human_attribute_name(l) } 

并且不要忘记为强参数允许该表单值:

params.require(:user).permit(roles: [])