9

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クラスのインスタンスです。

ご協力ありがとうございました。

4

1 に答える 1