【发布时间】:2014-12-10 14:57:17
【问题描述】:
我有三门课
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 的服务@ 987654326@
所以我需要一个实际的关联,这样我就可以急切地加载它而不是一个范围。
我试过这样添加
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 将我的条件应用于连接表而不是我想要的表。我该如何解决这个问题,我认为这是一个简单的解决方案,但我遗漏了一些明显的东西。
【问题讨论】:
标签: mysql sql ruby-on-rails-4