2016-11-06 7 views
1

これら2つのクエリをRails 5でどのようにマージできますか?アクティブレコードレールでの2つのクエリの融合

Event 
.where(starts_at: date.beginning_of_day..date.end_of_day) 
.where(kind: "opening") 

Event.where("cast(strftime('%w', starts_at) as int) = ?", date.wday) 
.where(kind: "opening") 
.where(weekly_recurring: true) 

これらのすべてのイベントを1つのクエリで実行する必要があります。あなたは結果を結合する場合は、1つのクエリに2つの別々の結果をしたい場合は、ヘルプ

答えて

0

ため

おかげで、その後

Event.where(starts_at: date.beginning_of_day..date.end_of_day).where(kind: "opening").where("cast(strftime('%w', starts_at) as int) = ?", date.wday).where(kind: "opening").where(weekly_recurring: true) 

、私は、アクティブなレコードは、このような方法を持っていると思ういけません。

+0

これは私が必要としているものではありません:(私は良いbeginning_of_dayとend_of_dayと良い日(キャスト(strftime ....))とイベントを開く必要があります。 – barnab21

0

私はいつもSQLで必要なものなど、複雑なクエリを書く方が簡単です。 ActiveRecordに書き込むよりも書く方が速いでしょう。あなたのケースでは

は、私はこのような何かをするだろう:

query = "starts_at between #{date.beginning_of_day} and #{date.end_of_day} 
and kind = 'opening' 
and weekly_recurring = true 
and cast(strftime('%w', starts_at) as int) = #{date.wday}" 

Event.where(query) 

私は、このアプローチより簡単に、よりmaintanable見つけます。

関連する問題