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
上記の 2 つのスニペットは、私のEvent
クラスのインスタンスです。
ご協力ありがとうございました。