スリ飯屋Malankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

【Rails】joinしたテーブルに対し、where句で特定の日付前後で絞り込みしたい

パッと出来なかったのでメモ。

where句でテーブル名とカラム名両方を指定し、文字列で条件指定すれば出来ました。

Model.joins(:join対象のテーブル名).where("join対象のテーブル名.join対象のテーブルにあるカラム名 >= ?", 日付)

ordersテーブルのorder_dateが、2020/01/20以降のUserを取得する

User.joins(:orders).where("orders.order_date >= ?", Date.parse('2020/01/20'))

発行されるSQL

SELECT  1 AS one FROM `users` INNER JOIN `orders` ON `orders`.`user_id` = `users`.`id` WHERE (orders.order_date >= '2020-01-20') LIMIT 1

参考にしました。

teratail【テラテイル】|ITエンジニア特化型Q&Aサイト

Rails ActiveRecord/SQL 小技集 - Qiita