1

has_many :entry_states という Entry というモデルがあります。EntryState には、:read という属性があります。

entry_state があるかどうかに関係なくすべてのエントリを取得したいので、LEFT OUTER JOIN がコーディング ホラーの左外部結合を見るのに最適な方法だと思います

ただし、結果に EntryState の属性も含めたいと思います。だから私は次のようなクエリを持っています:

entries = Entry.select('entries.*, entry_states.read').
joins("LEFT OUTER JOIN entry_states ON entries.id = entry_states.entry_id AND entry_states.user_id = #{user_id}")

これに関する問題は、この後 entry_states オブジェクトが利用できないことです。

次のような読み取り状態を取得できます。

entries.first.read
>> t

生の列の値が得られますが、これはブール列であるため、元に戻すtrueか、false

EntryState オブジェクト全体を取得できればさらに良いでしょう。.includes(:entry_state) を使用してみましたが、の外部結合条件を含める方法が見つかりませんでしたAND entry_states.user_id = #{user_id}

4

0 に答える 0