Rolify finder方法返回空数组--Rails

时间:2017-02-15 06:46:13

标签: ruby-on-rails activerecord rolify

我正试图获得https://msdn.microsoft.com/en-us/library/4191fzwb(v=vs.110).aspx之一(第3号),但它总是返回一个空数组。

用户模型:

class User < ActiveRecord::Base
  rolify

  has_many :forums, dependent: :destroy
end

论坛模型:

class Forum < ActiveRecord::Base
  resourcify

  belongs_to :user

  def participants
    # Find all users with any role in the forum
    User.with_any_role :admin, { name: :moderator, resource: self }
  end
end

添加角色:

user.add_role :admin, Forum.find(3)

测试角色:

2.4.0 :043 > user.has_role? :admin, Forum.find(3)
  Role Load (21.9ms) SELECT ...
 => true

我尝试从控制台运行Forum.find(3).participantsUser.with_any_role :admin, { name: :moderator, resource: Forum.find(3) },并且都返回空数组,例如:

2.4.0 :027 > Forum.find(3).participants
  Forum Load (21.9ms) SELECT ...
  User Load (28.7ms) SELECT ...
 => []

我在这里缺少什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

通过跟踪代码here 您可以将参数作为字符串或哈希传递。

User.with_any_role({name: :admin, resource: Forum.find(3)},{name: :moderator, resource: Forum.find(3)})

将搜索所有用户具有管理员或管理员角色的论坛实例,其ID为3