0

我想从用户模型中获取一个说版主的列表,它在这种情况下有效

u = User.new(:name => "n", :surname => "s", :email => "a@m.c", :password => "x")
u.add_role(:moderator)
u.save!

但是如果我像这样将资源分配给用户模型,它不会列出具有角色主持人的用户

u = User.new(:name => "m", :surname => "b", :email => "a@m.c", :password => "x")
u.add_role(:moderator, Post.first)
u.save!

更新

post.rb

class Post < ActiveRecord::Base
  attr_accessible :user_id, :content
  belongs_to :user
end

用户.rb

class User < ActiveRecord::Base
  rolify
end
4

1 回答 1

2

您应该添加resourcify到您的 Post 模型和其他您想要应用角色的模型中,如自述文件中所述。

因此,您的 Post 模型应如下所示:

Post.rb

class Post < ActiveRecord::Base
  resourcify
  attr_accessible :user_id, :content
  belongs_to :user
end

* 编辑 *

您可以使用角色 :admin 获取所有用户User.with_all_roles({:name => :admin})

我创建了一个香草项目,使用具有相同用户和帖子模型的 rolify。更改帖子模型并添加resourcify,更改用户模型并添加has_many :posts

user = User.create(...)
user.add_role :admin
post = user.posts.create(...)
user2 = User.create(...)
user2.add_role(:moderator, post)

似乎与这些一起工作:

  • User.with_all_roles({:name => :admin})
  • User.with_all_roles({:name => :moderator, :resource => Post })
  • User.with_all_roles({:name => :moderator, :resource => Post.first })
于 2012-12-24T10:46:44.113 回答