如何从关联中过滤记录

时间:2019-01-22 07:13:54

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

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

enter image description here

这是我的JobsResource表记录 enter image description here

请提供任何帮助

3 个答案:

答案 0 :(得分:4)

您可以通过以下方式完成

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

答案 1 :(得分:1)

这就是您需要的:

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

答案 2 :(得分:0)

您可以使用与以下内容关联的resource_types记录检索作业记录:

Job.joins(:resource_types)

如果您需要与作业没有关联的所有resource_types记录,则可以执行:

ResourceType.where(job: nil)