Rails_Admin用户控件

时间:2011-12-08 10:05:24

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

有什么办法可以限制某些用户只能在rails_admin中看到自己的内容吗?

基本上说在一个地理区域内有一群Scout领导者,我希望有很多领导者,然后只允许他们看到他们创造的项目。

我是否需要为它们分配一个地理ID,然后将其添加到设计?

1 个答案:

答案 0 :(得分:3)

我通常使用CanCan来执行此操作。如果相关用户是当前用户,您可以添加检查。

rails admin(ability.rb)的CanCan配置示例,详细示例请参阅rails_admin wiki on CanCan

class Ability
  include CanCan::Ability

  def initialize(user)
    if user
      can :access, :rails_admin
      if user.role? :employee
        can :read, [Model1, Model2, Model3]
        can :update, User, :id => user.id #employee can update own user details
      elsif user.role? :admin
        can :manage, :all
      end
    end
  end
end

要再次检查用户的角色,请在用户模型中添加/更改以下内容

# Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :role

  def role_enum
    %w[admin employee]
  end

 def role?(role)
   self.role == role.to_s
 end