railsadmin显示当前用户

时间:2017-01-18 20:29:22

标签: ruby-on-rails rails-admin

在RailsAdmin中,如何配置它以便它只显示与当前用户关联的记录?现在,每个' admin'登录将看到每个人的记录。

我希望admin1登录只能看到与admin1相关联的内容。 Admin1不应该看到Admin2的数据。

我没有使用Devise,Sorcery或Cancancan。所有这一切都是手动完成的。

2 个答案:

答案 0 :(得分:0)

听起来你正在寻找这样的东西:

https://github.com/influitive/apartment

如果您想手动执行...您将希望您的控制器调用一个查询,该查询将仅过滤该用户应该有权访问的结果...所以而不是像Client.all这样的东西。 ,你会使用类似current_user.clients ....

的东西

答案 1 :(得分:0)

我明白了。

在rails_admin.rb中,添加:

config.current_user_method do
    user = User.find_by( id:session[ :user_id ] )
end
config.authorize_with :cancan

在ability.rb中:

class Ability
  include CanCan::Ability

  def initialize(user)
    if user && user.admin?
      can :access, :rails_admin
      can :dashboard
      can :manage, User,    id: user.id
      can :manage, Manager, user_id: user.id
      can :manage, Staff,   manager: { user_id: user.id }
    end
  end
end