关于has_many的条件

时间:2014-12-10 14:57:18

标签: mysql sql ruby-on-rails-4

我有三节课 TeamMemberServiceServiceTeamMember

我有

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将我的条件应用于连接表而不是我想要的表。我怎么能解决这个问题,我认为这是一个简单的解决方案,我错过了一些明显的东西。

1 个答案:

答案 0 :(得分:0)

只需按source: :service

更改source: :team_member即可