查找存在关联记录的位置

时间:2012-08-22 17:59:05

标签: ruby-on-rails ruby activerecord

如何只选择那些具有关联标记记录的员工?换句话说,只选择具有一个或多个与之关联的标记记录的员工记录。

class Employee < ActiveRecord::Base
  has_and_belongs_to_many :tags
end

class Tag < ActiveRecord::Base
  has_and_belongs_to_many :employees
end

下面的查询(这是错误的)将让你们了解我正在尝试做什么。

Employee.includes(:tags).where("tags.id != nil")

1 个答案:

答案 0 :(得分:25)

您可以使用.joins

Employee.joins(:tags)

此生成的SQL在INNER JOIN表中包含tags,省略了没有关联employees记录的tags表记录。