1
Railsクエリインターフェイスで次のクエリを実行しようとしていますが、ロジックを変換できません。クエリがあるrailsのクエリインターフェイスでクエリに "and"と "or"句を追加できない
Select f.* from feeds f
Left join feed_items fi on fi.id = f.feedable_id
where
f.feedable_type in ('Homework', 'Datesheet')
and
(
(fi.assignable_type = 'Level' and assignable_id IN (1)) or
(fi.assignable_type = 'Student' and assignable_id IN (1)) or
(fi.assignable_type = 'Section' and assignable_id IN (1))
)
シナリオ:
私がやっている私は
{"page"=>"1", "limit"=>"2", "type_filter"=>["Homework", "Datesheet"], "assignable_filter"=>{"Student"=>"[2]", "Section"=>"[1]", "Level"=>"[1]"}}
これまでのところ、私のクエリで動的に追加されるフィルタを含む自分の行動にparamsハッシュを以下の受信テーブルを結合して、filter型のwhere句を追加しましたが、assignable_filtersを動的に追加する方法が不明です。ここに私のレールのコードは、options
は、動的にクエリを構築するのないまっすぐ進む方法がありませんでした私は、レール5
です。私が気づいた最初のことは、フィードとfeed_items(1対多の関係ですか?)です。 yesの場合、 'Feed.includes(:feed_items)'は正しいでしょう。 – haffla
ここでは、Rails5でORクエリを実行する方法を確認できます:https://stackoverflow.com/questions/32753168/rails-5-activerecord-or-query – haffla
@hafflaその1対1の関連 –