Ruby on rails RubyonRails4-如何获得一组用户的多个关联?

Ruby on rails RubyonRails4-如何获得一组用户的多个关联?,ruby-on-rails,associations,Ruby On Rails,Associations,我的数据库中有以下设置。我们有用户。每个用户都有许多条目。通过名为organization\u Users的表,用户也属于组织 class User < ActiveRecord::Base has_many :entries has_many :organization_users has_many :organizations, :through => :organization_users end class Entry < ActiveR

我的数据库中有以下设置。我们有用户。每个用户都有许多条目。通过名为organization\u Users的表,用户也属于组织

class User < ActiveRecord::Base
     has_many :entries
     has_many :organization_users
     has_many :organizations, :through => :organization_users
end

class Entry < ActiveRecord::Base
     belongs_to :user
end

class Organization < ActiveRecord::Base
     has_many :organization_users
     has_many :users, :through => :organization_users
end

class OrganizationUser < ActiveRecord::Base
     belongs_to :user
     belongs_to :organization
end
class用户:组织\u用户
结束
类条目:组织\u用户
结束
类OrganizationUser

我的问题是:对于给定的组织,我希望获得该组织中用户的所有条目的列表。有没有一个很好的紧凑的方法来实现这一点?我知道我可以迭代组织中的所有用户并获取条目,但我不确定是否有一种很好的rails-y方法可以做到这一点

试试这样的方法:

my_org = Organization.find(id)
my_org.users.eager_load(:entries)

首先,获取要查询的组织。然后通过:通过关联,您可以直接检索该组织的所有用户。最后使用eager_load,在一个查询中获得所有条目。结果将是一个ActiveRecord::关系

试试这样的方法:

my_org = Organization.find(id)
my_org.users.eager_load(:entries)

首先,获取要查询的组织。然后通过:通过关联,您可以直接检索该组织的所有用户。最后使用eager_load,在一个查询中获得所有条目。结果将是一个ActiveRecord::关系

根据您的模型,假设在
organization\u users
表中有一个名为
organization\u id
的外键,则可以执行以下操作

Entry.joins(:user => :organization_users).where("organization_users.organization_id = ?", org_id)

其中,
org\u id
是给定组织的
id
。这将为您提供组织中所有用户的所有条目

假设您在
组织用户
表中根据您的模型有一个名为
组织id
的外键,您可以执行以下操作

Entry.joins(:user => :organization_users).where("organization_users.organization_id = ?", org_id)

其中,
org\u id
是给定组织的
id
。这将为您提供组织中所有用户的所有条目

这将不起作用,因为一旦您通过
my_org.users
检索所有用户,rails将返回一个
ActiveRecord::Associations::CollectionProxy
对象,而不是
ActiveRecord
的实例。因此,您不能在
CollectionProxy
上调用
条目。您的方法只有在检索单个用户时才能工作,如:
my_org.users.first.entries
这看起来很有希望,但当我运行上面的语句时,我返回的是用户的ActiveRecord::AssociationRelation,而不是他们的条目。有什么想法吗?你只是想要一些条目吗?在此关联关系中,您拥有所有用户及其条目。您必须对每个用户进行循环,然后可以直接访问他们的条目,而无需查询数据库。这将不起作用,因为一旦通过
my_org.users
检索所有用户,rails将返回一个
ActiveRecord::Associations::CollectionProxy
对象,而不是
ActiveRecord
的实例。因此,您不能在
CollectionProxy
上调用
条目。您的方法只有在检索单个用户时才能工作,如:
my_org.users.first.entries
这看起来很有希望,但当我运行上面的语句时,我返回的是用户的ActiveRecord::AssociationRelation,而不是他们的条目。有什么想法吗?你只是想要一些条目吗?在此关联关系中,您拥有所有用户及其条目。您必须对每个用户进行循环,然后可以直接访问他们的条目,而无需查询数据库。All-in-one.hey谢谢,但此查询不提供一个数据库中所有用户的条目列表org@user402516使用组织中所有用户的条目列表更新了答案。嘿,谢谢,但此查询不提供组织中所有用户的条目列表org@user402516使用组织中所有用户的条目列表更新答案。