如何从关联中过滤记录
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
如何获取协会记录?我的工作 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