Rails_admin 通过授权排除字段

Rails_admin exclude fields by authorization

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

我已经创建了 rails_admin 仪表板,其中包含多个具有关联的模型。

我已经为 Person 添加了设计,这就是 AdminOwner 可以登录到我的仪表板的原因。

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

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

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

如何在操作中排除一些字段,这取决于现在谁在更改它?

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

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

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

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