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

user.rb

class User < ActiveRecord::Base
  rolify
end
4

1 に答える 1

2

readmeresourcifyで説明されているように、ロールを適用する 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})

同じ User および Post モデルで rolify を使用するバニラ プロジェクトを作成しました。Post モデルを変更して追加resourcify、 User モデルを変更して追加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 に答える