ビューに表示するレコードがいくつかあります。彼らは持っているstart_date
とend_date
。ビューにアクセスするとき、デフォルトでは、日付が期限切れになっていないレコードのみを表示するようにします。期限切れは次のように定義されます:
- 終了日と開始日<=今、そして
- 終了日が開始日より後
次に、期限切れのレコードを含むすべてのレコードを表示するチェックボックスが必要です。
どうすればこれにアプローチできますか?
ビューに表示するレコードがいくつかあります。彼らは持っているstart_date
とend_date
。ビューにアクセスするとき、デフォルトでは、日付が期限切れになっていないレコードのみを表示するようにします。期限切れは次のように定義されます:
次に、期限切れのレコードを含むすべてのレコードを表示するチェックボックスが必要です。
どうすればこれにアプローチできますか?
コントローラアクションでは、これをどこかに配置する必要があります。
params[:search] ||= {} # make sure this is instantiated
# filter to show the expired records
if params[:include_expired] # check if the checkbox is checked
params[:search][:end_date_lte] = Date.today # end_date <= Now
params[:search][:start_date_lte] = Date.today # end_date <= Now
end
@records = params[:include_expired] ? RecordClass.where("end_date > start_date").search(params[:search]) : RecordClass.search(params[:search])
また、すべての検索をバイパスして、次のようなスコープを使用することもできます。
@records = params[:include_expired] ? RecordClass.expired : RecordClass.all # or whatever logic you need
# scope in the RecordClass
scope :expired, where("end_date > start_date AND end_date <= ?", Date.today)