joinsメソッドで、filmモデルに関連したpostモデルにさらに関連したcommentモデルも内部結合させたいときはどうしたらいいだろうって思ったことありませんか?

そういうときはこんな感じで書くと2個おくのモデルも関連付けさせることができるんです!

Film.joins(posts: :comments).where(comments: {created_at: Time.new(2020, 1, 1)..Time.new(2020, 3, 31) })

これで2020年1月1日~2020年3月30日までにコメントされた映画の抽出ができます!

whereメソッドで日付指定したい時は以下のようにします

Film.select(:film_id, :title).joins(inventories: :rentals).where(rental: { rental_date: Time.new(2005).beginning_of_year..Time.new(2005).end_of_year, return_date: nil })

時間/日付を指定したいときは

Time.new(日付・時間).beginning_of_year..Time.new(締めたい時間・日付).end_of_year

というように範囲指定するといいです!

ちなみに.end_of_yearは省略できます

filmモデルから、関連するactorモデルを参考にJOE SWANKが出ている映画を抽出している。

Film.joins(:actors).where(actor: { first_name: "JOE", last_name: "SWANK" }).select(:film_id, :title)

このように、whrereで別モデルのカラムデータを指定したい時は、