使用Role Model和simple_forms分配角色

时间:2016-01-04 21:56:07

标签: ruby-on-rails ruby devise simple-form cancan

首先,我使用的是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

我不知道我做错了什么。即使我可以让他们更新。没有显示当前角色并不是一件大事。

1 个答案:

答案 0 :(得分:0)

您不需要直接访问roles_mask属性,只需为角色数组分配h1= title 属性即可。例如:

roles

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

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