[英]Conditions on has_many through
I have three classes TeamMember
, Service
and ServiceTeamMember
我有三个类
TeamMember
, Service
和ServiceTeamMember
I have 我有
class Service
has_many :service_team_members
has_many :team_members, through: :service_team_members
end
class ServiceTeamMember
belongs_to :service
belongs_to :team_member
end
class TeamMember
has_many :service_team_members
has_many :services, through: :service_team_members
end
Now in a certain area of my site I want to eager load departments, where a department is a top level service, I'm using ancestry so all you need to know is a department is a service with ancestry
of NULL
现在在我网站的某个区域中,我希望加载部门,部门是顶级服务,我正在使用ancestry,所以您只需要知道一个部门是
ancestry
为NULL
的服务即可。
So I need an actual association so I can eager load it rather than a scope. 因此,我需要一个实际的关联,以便可以急于加载它而不是作用域。
I've tried adding it as such 我试过这样添加它
has_many :departments, -> { where(ancestry: nil) }, through: :service_team_members, source: :service
But I get the following error 但我收到以下错误
Mysql2::Error: Unknown column 'services.ancestry' in 'where clause': SELECT `service_team_members`.* FROM `service_team_members` WHERE `services`.`ancestry` IS NULL AND `service_team_members`.`team_member_id` IN (28, 32)
So rails is applying my condition to the join table rather than the table I want. 因此,Rails会将我的条件应用于联接表,而不是我想要的表。 How can I get around this, I assume it's a simple solution and I'm missing something obvious.
我如何解决这个问题,我认为这是一个简单的解决方案,但我缺少明显的东西。
只需更改source: :service
通过source: :team_member
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.