首页 > 解决方案 > ActiveRecordy has_many 通过我需要找到至少一个孩子满足条件的所有父母

问题描述

我有三个 activerecord 模型:

“A”

class User < ApplicationRecord
  has_many :user_violation, class_name: "UserViolation", inverse_of: :user
  has_many :violations, through: :user_violation, class_name: "Violation"
end

中间:

class UserViolation < ApplicationRecord
  belongs_to :user, class_name: "User", foreign_key: :user_id
  belongs_to :violation, class_name: "Violation", foreign_key: :violation_id
end

乙:

class Violation < ApplicationRecord
end

我需要找到所有至少有一个违反列的用户:fatal设置为 true。

我有点卡在这里,这不起作用:

User.joins(:violations).where('violations.fatal = true')

标签: ruby-on-railsactiverecord

解决方案


要在 ORM 中使用查询过滤条件,我认为这种语法应该是:

User.joins(:violations).where(violations: {fatal: 'true'})

推荐阅读