使用 Rails 4.0、ActiveAdmin、Rolify 和 CanCan,通过 activeadmin 面板添加和删除用户角色不会保存(提交到数据库)。

我的 ActiveAdmin User and User Model 看起来不错,因为我可以使用 check_boxes 列出适用于用户的所有角色。尽管通过复选框添加任何角色或删除任何角色时,更改不会得到应用。

我收到一条通知,指出用户已成功更新,但当我查看数据库或呈现页面时,角色尚未更新。

如何在保存表单时更新角色?

编辑:

也使用设计。

最佳答案

这里的解决方案是允许 ActiveAdmin Controller 更新与用户相关的角色 ID。

ActiveAdmin.register User do

  permit_params :email, :password, :password_confirmation, role_ids: []

这是一个显示每个全局角色的复选框的表单。
  form do |f|
    f.inputs "User Details" do
      f.input :email
      f.input :password
      f.input :password_confirmation
      f.input :roles, as: :check_boxes
    end
    f.actions
  end

虽然我们正在这样做,但我们最好可以在不输入密码的情况下更新用户:
  # Allow form to be submitted without a password
  controller do
    def update
      if params[:user][:password].blank?
        params[:user].delete "password"
        params[:user].delete "password_confirmation"
      end

      super
    end
  end

将所有这些放在 app/admin/user.rb 中。

关于ruby-on-rails-4 - 使用 ActiveAdmin 更新 rolify 中的角色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20475257/

10-10 23:41
查看更多