关系是:
Account has many Groups
Group has many Users
我需要帐户中的一个方法来获取所有用户(每个组的用户),然后应用一个用户范围:
account.rb
def users
self.groups.map(&:users).flatten # Cannot apply User's scope
end
user.rb
scope :foo, ->{ where(bar: 'baz' }
我想我必须在 def users
中返回一个 Mongoid::Criteria 而不是一个数组,所以我可以做 account.users.foo
。我该怎么做?
谢谢!
PS:我试过了(应该在 ActiveRecord 中工作):
def users
ids=self.groups.map(&:users).flatten.map(&:id)
User.where(id: ids)
end
最佳答案
试试这个
def users
User.where(:group_id.in => self.groups.map(&:id))
end
关于ruby-on-rails - 如何返回一个 Mongoid::Criteria for A has many B has many C 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16466629/