2017-03-11 12 views
1

planting_date_beginplanting_date_endのモデルがあります。 planting_date_begin場合 ::2017年3月5日とplanting_date_end:3-12/2017 と今週は3月26日である/私はcurrent_weekRails 5のアクティブレコードクエリで、日付範囲が他の日付範囲と重複しています

例えば範囲とplanting_date_begin..planting_date_end重複の任意の日付のすべてのレコードを取得します2017-4/1/2017はクエリに含まれていません。

planting_date_begin:3/1/2017およびplanting_date_end:4/15/2017が含まれます。

私はcurrent_week範囲を設定します。

today = Date.today 
days_in_week = today.at_beginning_of_week..today.at_end_of_week 

この構文は適切ではないが、私は何かをしたいのように:

Planting.where((planting_date_begin..planting_date_end).overlaps?(days_in_week)) 

これを処理するための簡潔な方法は何ですか?ちなみに、私はポストグルを使用していますが、別の方法で行う場合があります。植栽は、範囲の前に始まり、後に終了した場合

答えて

2

たぶんとして簡潔ではないが、私はこれを現在のプロジェクトに多くのことをしなければならないと、私の方法はある...

start_date = Date.today.at_beginning_of_week 
end_date = Date.today.at_end_of_week 

@plantings = Planting.where('planting_date_end >= ? AND planting_date_begin <= ?', start_date, end_date) 

これは...すべてが重なっカバー範囲内で植え付けが終了した場合、範囲内で植え付けが開始された場合、範囲。

+0

私が行っていた場所よりもずっと簡単です –