subtitle

RaiseTechの各種コースをはじめとしたイロイロな学習の記録

RailsのActiveRecord(SQL逆引き)

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)