如何从关联中过滤记录

How to filter records from association

如何获取协会记录?我的工作 table.How 中有 4 个工作可以过滤所有 resource_type_id=2 的工作。例如,从下面的记录中(我想获得 2 和 3 作为结果的工作 ID)。

这是我的协会

class Job < ActiveRecord::Base   
  has_many :jobs_resources   
  has_many :resource_type, through: :jobs_resources, dependent: :destroy   
end

class ResourceType < ActiveRecord::Base   
  has_many :jobs_resources   
  has_many :jobs, through: :jobs_resources, dependent: :destroy end

class JobsResource < ActiveRecord::Base   
  belongs_to :job   
  belongs_to :resource_type 
end

这是我 resources_type table 的保存方式:

这是我的 JobsResource table 记录:

您可以通过以下方式完成

Job.includes(:resource_type).where(resource_types: {id: 2}) 

Job.includes(:jobs_resources).where(jobs_resources: {resource_type_id: 2}) 

Job.joins(:jobs_resources).where(jobs_resources: {resource_type_id: 2})

您可以使用 resource_types 记录关联的工作记录检索:

Job.joins(:resource_types)

如果您需要所有 resource_types 条与工作无关的记录,您可以执行:

ResourceType.where(job: nil)

这是您需要的:

Job.joins(:resource_type).where('resource_types.id = ?', 2).load