我正在使用带有 ActiveRecord 的 Rails 3,如果不插入几乎纯 SQL 的话,我无法让它生成我想要的查询。
我只是想执行这个 SQL 查询(实际上查询稍微复杂一点,但实际上这部分我做错了)。
SELECT DISTINCT users.*, possible_dates.*
FROM users
LEFT OUTER JOIN possible_dates
ON possible_dates.user_id = users.id
AND possible_dates.event_id = MY_EVENT_ID;
我设法使用
User.includes(:possible_dates)
.joins("LEFT OUTER JOIN possible_dates
ON possible_dates.user_id = users.id
AND possible_dates.event_id = #{ActiveRecord::Base.sanitize(self.id)}"
)
.uniq
但我觉得我缺少一些东西来简单地AND
使用 ActiveRecord 查询方法添加左连接的条件。我也尝试做这样的事情
User.includes(:possible_dates)
.where('possible_dates.event_id' => self.id)
.uniq
但这会产生(如预期的那样),查询WHERE
的末尾有一个子句,而不是AND
我想要的连接子句。
顺便说一句,在上面的两个片段中是我的类self
的一个实例。Event
谢谢您的帮助。