ruby-on-rails - 如何返回一个 Mongoid::Criteria for A has many B has many C 关系?

标签 ruby-on-rails ruby mongoid

关系是:

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/

相关文章:

foreign-keys - Mongoid own_to 指定foreign_key

ruby-on-rails - 如何禁用 Mongodb 继承? (忽略类型字段)

ruby-on-rails - 无法使用 Mongoid 和 Geocoder 对嵌入式文档进行地理查询

ruby-on-rails - 方法定义中的 Ruby Splat 运算符占用更多内存

ruby-on-rails - rails 3 : Write a view helper for popovers

ruby-on-rails - 如何隐藏 submit_tag 按钮

ruby - 使用 rvm 切换 ruby​​ 会破坏 chef 11.4.4 knife 命令

ruby - 当第一个相等时按辅助键对对象进行排序

ruby - 使用 Ruby 将 XML 转换为 JSON 并将其保存为单独的文件

ruby-on-rails - 在 Rails 中结合 MongoDB 和 Postgresql?