Rails_admin按授权排除字段

时间:2015-07-29 11:39:49

标签: ruby-on-rails devise cancan rails-admin

我有一个名为Person的模型。它有两个子模型AdminOwner

我创建了rails_admin信息中心,其中包含多个带关联的模型。

我已将设计添加到Person,这就是AdminOwner可以登录我的信息中心的原因。

我已经添加了cancan的授权并定义了他们的能力。管理员可以管理所有内容,而所有者可以管理自己的数据。

现在问题就在于此。当所有者登录并尝试编辑自己时,他需要编写自己的密码,这很好。

但是,当管理员登录并尝试编辑所有者时,会要求写入所有者的密码

如何在操作中排除某些文件,具体取决于谁正在更改它?

我虽然使用了以mby devise登录的current_person,但是当我的rails_admin do /* my code */ end放在我的模型代码中时如何获取它?

1 个答案:

答案 0 :(得分:1)

这是隐藏密码字段的一种方法,因此只有用户编辑他/她的记录才能看到它。

edit do
  include_all_fields
  [:password, :password_confirmation].each do |f|
    field f do
      visible do           
        bindings[:object].id == bindings[:view].current_user.id         
      end
    end
  end
end

您可以创建自定义操作以重置仅限于管理员的密码。