使用Decalarative Authorization查找用户是Admin还是Not

时间:2013-05-03 10:37:03

标签: ruby-on-rails admin declarative-authorization

我已在我的博客应用程序中实现了声明性授权。现在,我有三个布局,分别用于Admin,Authenticated User和guest用户。所以我需要检查在特定时间使用该应用程序的用户类型。我们有用户模型,角色模型和分配模型。

User.rb

class User < ActiveRecord::Base

  attr_accessible :login, :email, :password, :password_confirmation, :role_ids

  has_many :articles
  has_many :comments
  has_many :assignments

  has_many :roles, :through => :assignments

  def role_symbols
    roles.map do |role|
      role.name.underscore.to_sym
    end
  end

  acts_as_authentic do |c|
    c.login_field = :login
  end

  def deliver_password_reset_instructions!
    reset_perishable_token!
    Notifier.deliver_password_reset_instructions(self)
  end

end

Assignment.rb

class Assignment < ActiveRecord::Base
  belongs_to :user
  belongs_to :role
end

Role.rb

class Role < ActiveRecord::Base
  attr_accessible :name
  has_many :assignments
  has_many :users, :through => :assignments
end

任何解决方案?

1 个答案:

答案 0 :(得分:0)

您可以使用此gem简化您的结构: https://github.com/platform45/easy_roles 按照github上的说明进行修改,然后修改模型。 这很简单,只需几步。你只需要你的用户模型就可以了!

此外,我会推荐康康宝石(https://github.com/ryanb/cancan)。

easy_roles和cancan是很容易定义角色和权限的好组合!