Railsには、ActiveRecordというライブラリがあることによって、SQLを書く必要がない。
データベースを操作するのに、Rails独自のコマンドがあるからだ。RailsのコマンドをActiveRecordが自動でSQLに翻訳してくれるのである。
SQLを知らない人にとっては、とても素晴らしい機能だと思うが、SQLを知っている側からすると、また新しいコマンドを覚えなくてはいけないので、ちょっと迷惑w
どのコマンドがどのSQLに該当するのか、すぐ忘れるのでよく使うものだけ書き出しておく。
詳細は、Railsガイドに「ActiveRecordクエリインターフェース」のページがあるので、それを参照。
Select
SELECT * FROM clients WHERE (clients.id = 10) LIMIT 1
⇒ @clients = Client.find(10)
SELECT * FROM clients WHERE (clients.id IN (1,5))
⇒ @clients = Client.find([1, 5])
補足:Where句の書き方
Where句で条件を指定するときは、
Client.where("cat_num = ?", params[:nums])
Client.where("cat_num = ? AND checked = ?", params[:nums], true)
のように条件の値は後ろに書く。
SELECT * FROM clients WHERE (clients.created_at BETWEEN '2021-02-07 00:00:00' AND '2021-02-08 00:00:00')
⇒ @clients = Client.where(created_at: (Time.now.midnight - 1.day)..Time.now.midnight)