ruby-on-rails - 如何从关联中过滤记录
问题描述
如何从关联中获取记录?我的工作表中有 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 表记录:
解决方案
您可以通过以下方式进行
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})
推荐阅读
- javascript - 如何使用javascript滚动元素?
- python - 如何使命令参数不区分大小写?
- postgresql - sql更新表条件取决于同一张表中的其他行
- javascript - 反应本机导航错误-TypeError:无法读取未定义的属性'catch'
- android - MockK - 左匹配器的匹配模拟签名失败:[any(), any()]
- regex - 如何使用可选的无序查询字符串重定向 URL 并将其保存在 Nginx 中
- vue.js - 动作中的 Vuex 访问状态很奇怪
- python - 每次更新我的条目时如何调用函数
- javascript - 在 flatpickr 中允许日期小于 minDate
- reactjs - 从 mapstatetoprops 重构为 React 中的钩子