【发布时间】:2019-12-31 18:40:26
【问题描述】:
如果存在两种可能的关联,我如何获得包含特定 User 存在的所有唯一 Jobs 的 ActiveRecord 集合?
class User
has_many :assignments
has_many :jobs, through: assignments
has_many :events
has_many :jobs_via_events, through: :events, source: :jobs
end
class Assignment
belongs_to :user
belongs_to :job
end
class Event
belongs_to :user
belongs_to :job
end
class Job
has_many :assignments
has_many :events
end
到目前为止我能想到的最好的方法是使用多个连接,但它并没有返回正确的结果:
Job.joins("INNER JOIN assignments a ON jobs.id = a.job_id").joins("INNER JOIN events e ON jobs.id = e.job_id").where("a.user_id = ? OR e.user_id = ?", userid, userid)
有什么建议吗?
【问题讨论】:
-
你的代码中有一个简单的错字:最后你写了
.where("a.job_id = ? OR e.job_id = ?", userid, userid),当然应该是.where("a.user_id = ? OR e.user_id = ?", userid, userid)。但不确定使用两个内连接时查询是否有效? -
啊,很好,但这只是在这里重新输入的一个错字。我会更新我的帖子!
标签: ruby-on-rails join rails-activerecord