首页 > 解决方案 > 如何从关联中过滤记录

问题描述

如何从关联中获取记录?我的工作表中有 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

这是我的资源类型表的保存方式:

在此处输入图像描述

这是我的 JobsResource 表记录:

在此处输入图像描述

标签: ruby-on-railsactiverecordruby-on-rails-5.2

解决方案


您可以通过以下方式进行

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})

推荐阅读