公司has_many:代理商,代理人belongs_to:公司。
代理人has_many:评论,评论belongs_to:agent和:business。
业务has_many:评论。
ActiveRecord查询通过公司代理人查找所有具有评论的企业?
我可以获得公司所有代理商的所有评论:
@company.agents.joins(:comments)
使用该查询,我可以获取公司代理评论的所有business_id:
@company.agents.joins(:comments).pluck(:business_id)
(因此,如果没有别的办法,我可以在给定ID数组的情况下使用第二个查询到商业中获得所需的商家列表。)
但是我似乎无法在单个查询中扩展关联链以包含企业,例如,查找公司代理评论的每个企业的业务记录的查询,例如:
@company.agents.joins(:comments).joins(:business)
#无法加入'代理商'以名为' business'
编辑:
按照Jon在评论中的建议尝试@company.agents.joins(:comments => :business)
。如果执行.count()或.pluck()。
如果还需要按业务字段查询,可以通过以下方式进行查询:
@company.agents.joins(:comments => :business).where(:businesses => {:account_status => :active})
答案 0 :(得分:1)
您要将第二个join
查询添加到agents
范围内。您需要使用以下内容:
@company.agents.joins(:comments => :business)
如果您需要为业务添加条件,您可以按照以下步骤添加条件:
@company.agents.joins(:comments => :business).where(:businesses => {:account_status => :active})
这样它就可以正确地为您链接连接查询,并将条件添加到相应的表中。