AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

rails console から生の SQL クエリを実行する

User.find みたいにできたらまあそれはそうなんだけど、 model がないと実行できないので生 SQL を実行する。 まず model がないってなんだよ、と言われたら無いもんはないので……。

ActiveRecord::Base.connection.select_all('SQL を書く').to_hash

こんな感じで。 標準の console だと整形とか色付けがされるので、 SQL 実行はだいたい想定通りの速度だけど、標準出力に戻ってくるまでがかなり長いので、1000 件以上を目安に適度に LIMIT かけましょう。

❯ rails consiole
[1] pry(main)> ActiveRecord::Base.connection.select_all('SELECT * FROM users').to_hash

[
    [1] {
                        "id" => 1,
                     "login" => "hogehoge@example.com",
...
                "created_at" => 2023-07-14 14:00:32 +0900,
                "updated_at" => 2023-07-14 19:02:12 +0900
    },

...

]

select_all と execute の使い分け

qiita.com

という感じ。

正直 console から生 SQL 流す時に DML で INSERT/UPDATE するな、みたいな気持ちあるので、 select_all で解決できないパターンは機能化するかなんかしましょう! という事を心がけている。

便利なメソッドたち

以下で解説されている。 ありがてぇ〜。

qiita.com

参考

rikric.hatenablog.com