3つのモデルlog
(顧客に属します)がcustomer
ありproject
、rails 3.2
アプリ内にあります。customer
とproject
havesales_id
フィールドの両方。実行したいクエリは次のとおりです。
顧客の次のログを返します。1) sales_id が session[:user_id] と等しい顧客のログ、および 2) プロジェクトの sales_id が session[:user_id] と等しい顧客のログ
1) の Rails クエリは次のようになります。
Log.joins(:customer).where(:customers => {:sales_id => session[:user_id]})
2) の Rails クエリは次のようになります。
Log.joins(:customer => :projects).where(:projects => {:sales_id => session[:user_id})
上記のクエリを組み合わせるには、次のことを行うのが正しい方法ですか?
Log.joins([:customer, {:customer => :projects}]).where('customers.sales_id = id OR projects.sales_id = id', id: session[:user_id])
http://guides.rubyonrails.org/v3.2.13/active_record_querying.htmlの11.2.4 章では、興味深いクエリ ケースについて説明しています。上記のクエリはまだテストしていません。上記のユニオン クエリが本当に正しいかどうかを知りたいです。