こんにちは!kossyです!
さて、今回はRubyのEnumerableクラスのインスタンスメソッドである、any?メソッドを使って、
レコードが特定の日にちの範囲内に含まれているかを判定するやり方をブログに残してみたいと思います。
環境
Ruby 2.6.3
Rails 6.0.2.1
MacOS Mojave
前提として、User has_many Books という関連が組んであるとします。
コード全晒し
user.books.any? do |book| base_date = book.created_at.localtime.to_date base_date >= Date.today.ago(3.days) && base_date <= Date.today.in(3.days) end
userが持っているBookの中で、bookの作成日が前後3日間のレコードがあれば、trueが返り、
一つもなければfalseが返ります。
ちなみに、selectを使えば、前後3日間の条件に合致したレコードを配列にして返すことができます。
findを使うと、条件に合致したレコード1つを返すことができます。
勉強になりました。