baronyan's blog

linux,macでruby、railsでの開発をしていく中で知ったこと、備忘的なことなどを書いていきます。

railsでDateクラスを検索条件に使う方法

railsActiveRecordでdatetime型を検索する場合、検索条件には
TimeインスタンスActiveSupport::TimeWithZoneインスタンスが指定できます。

日付の区切りを指定したい時などにDateインスタンスを条件に使えると便利なのですが、
こちらはActiveRecordの検索条件としては許容されていません。

ですが、

Date.today + 0.hours

といった具合に、時分秒を増減することで、
ActiveSupport::TimeWithZoneへの型変換が行われ、
検索条件に使えるようになります。

余談ですが、railsはdatetime型に保存する時はutcで保存する流儀ですが、

Time.now.utc

というようにutcメソッドを呼ぶことで、簡単に、
utcに変換した値を検索条件として使うことができます。