0

我已经在我的博客应用程序中实现了声明式授权。现在,我为管理员、经过身份验证的用户和来宾用户分别设置了三种布局。所以我需要检查在特定时间使用该应用程序的用户类型。我们有用户模型、角色模型和分配模型。

用户.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

作业.rb

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

角色.rb

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

有什么解决办法吗?

4

1 回答 1

0

你可以使用这个 gem 来简化你的结构: https ://github.com/platform45/easy_roles 按照 github 上的说明修改你的模型,就像那里描述的那样。这真的很容易,只需几个步骤。你只需要你的用户模型,就是这样!

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

easy_roles 和 cancan 是一个很好的组合,可以很容易地定义角色和权限!

于 2013-05-03T10:53:32.187 回答