查找存在关联记录的位置

pri*_*ry0 13 ruby activerecord ruby-on-rails

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

class Employee < ActiveRecord::Base
  has_and_belongs_to_many :tags
end

class Tag < ActiveRecord::Base
  has_and_belongs_to_many :employees
end
Run Code Online (Sandbox Code Playgroud)

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

Employee.includes(:tags).where("tags.id != nil")
Run Code Online (Sandbox Code Playgroud)

dee*_*our 25

您可以使用 .joins

Employee.joins(:tags)
Run Code Online (Sandbox Code Playgroud)

这个生成的SQL包含和INNER JOINtags表上,省略employees没有关联tags记录的表记录.