はじめに
Railsでは、ActiveRecodeがデータベースにSQLを送ってくれるので、自力でSQLを書く機会は少ない。
その中でもバックエンドエンジニアとしてSQLへの理解が重要なので、以下の方法で確認することをオススメしたい。
方法
-
rails c
でコンソール起動 - 以下のコマンドでデータベースにSQLを送信
コンソール
ActiveRecord::Base.connection.select_all("SQL文を書く'").to_a
以下は実行例(tasksテーブルのtitleカラムに"テスト"の文字列を含んだレコードを全て取得)
コンソール
ActiveRecord::Base.connection.select_all("SELECT * FROM tasks WHERE title LIKE 'テスト'").to_a
追記
select_all
メソッドよりも、execute
メソッドの方が汎用的であるとのコメントをいただいた。
そのため、以下の通りexecute
メソッドを利用して実行した。(⚠️検索するRailsアプリが異なっているので、モデル名や応答結果が異なる)
コンソール
ActiveRecord::Base.connection.execute("SELECT * FROM posts WHERE title LIKE 'タイトル'").to_a
select_all
とexecute
メソッドの違い
-
select_all
メソッド
SELECTクエリを実行し、データを取得するために使用される -
execute
メソッド
UPDATE、INSERT、DELETEなどのSQL文を実行し、データを更新するために使用される
データベースから取得したい処理に応じて使い分けが必要だと思った。
汎用的に使うのであれば、execute
メソッドを利用したい。