productsテーブルの子テーブルであるdownload_logsテーブルがあります。
この2つのテーブルをjoinsで結合して、レコードの値を比較して条件に適合したものを取得したいです。
実現したいことを具体的に言えば、
productsレコードのcreated_atが、download_logsレコードのcreated_atの一ヶ月前よりも過去のproductsレコードを取得するということをやりたいと思っています。
###環境
Rails 4.2.6
###試したこと
joinsメソッドで結合してwhereで絞り込みました。
ruby
1Product.joins(:download_logs).where('products.created_at < ?', Time.current.beginning_of_month - 1.month).where('download_logs.created_at >= ?', Time.current.beginning_of_month)
このコードを変えて、各download_logsレコードのcreated_atと、そのdownload_logsレコードに紐付いたproductsレコードのcreated_atを比較して、後者が前者よりも一ヶ月以上前のものを取得する、という機能にしたいです。
ただ、各download_logsレコードをイテレーションしてproductsレコードと比べる方法で取得する以外の方法でのご教示をお願いしたいです。あるのかわかりませんが、あればパフォーマンス改善につながると思います。教えていただけると助かります。
何卒よろしくお願いいたします。
あなたの回答
tips
プレビュー