不确定您是否已经看过这个,但是Ryan Bates制作了一份关于:
独立角色模型的精彩文档。
编辑:
以下是我目前在使用的代码。我相信您的“Assignment”与我的“UserRole”是相同的。
user.rb
has_many :user_roles, :dependent => :destroy, :uniq => true
has_many :roles, :through => :user_roles, :uniq => true
def has_role?(role_sym)
roles.any? { |role| role.name.underscore.to_sym == role_sym.downcase }
end
role.rb
has_many :user_roles, :dependent => :destroy, :uniq => true
has_many :users, :through => :user_roles, :uniq => true
user_role.rb
belongs_to :user
belongs_to :role
然后在我的 ability.rb 文件中
def initialize(user)
user ||= User.new
if user.has_role? :Admin
can :manage, :all
else
can :read, :all
end
end
接下来我可以轻松地分配角色,就像在我的种子文件中一样:
...
admin = Role.create!(:name => "admin")
standard = Role.create!(:name => "standard")
user1.roles << admin
user2.roles << standard
所以通过调用 user.roles << [role_name],我实际上创建了一个 UserRole,它具有 user_id 和 role_id。
admin = Role.create!(:name => "admin") standard = Role.create!(:name => "standard")
放在哪里? - Vasseurthseeds.rb
文件中。然后你就可以调用rake db:seed
来填充你的数据库了。 - ardavis