我有三节课
TeamMember
,Service
和ServiceTeamMember
我有
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
现在在我的网站的某个区域,我想急切加载部门,其中部门是顶级服务,我使用的是祖先,所以您需要知道的是部门是ancestry
的服务NULL
所以我需要一个实际的关联,所以我可以急于加载它而不是范围。
我已尝试将其添加为
has_many :departments, -> { where(ancestry: nil) }, through: :service_team_members, source: :service
但是我收到以下错误
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)
所以rails将我的条件应用于连接表而不是我想要的表。我怎么能解决这个问题,我认为这是一个简单的解决方案,我错过了一些明显的东西。
答案 0 :(得分:0)
只需按source: :service
source: :team_member
即可