关系是:
Account has many Groups
Group has many Users
我需要Account中的方法来获取所有用户(每个组的用户),然后应用用户范围:
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
答案 0 :(得分:2)
试试这个
def users
User.where(:group_id.in => self.groups.map(&:id))
end
答案 1 :(得分:1)
试试这个:
def users
self.groups.map {|g| g.users.foo }.flatten
end
答案 2 :(得分:0)
我使用find
代替where
并且它有效。
def users
ids=self.groups.map(&:users).flatten.map(&:id)
User.find(ids)
end
无论如何,我不确定这是否是我想做的最佳方式。建议将不胜感激。