Rails: RailsからDBを操作する為の前書き
Railsでは、MySQL、PostgresなどのDBと連携させて動作させることができます。
DBを使う場合は、DBにログインしてMySQLやPostgresなどのそれぞれのDBコマンドを打てばよいわけですが、RailsからもDBを操作することができます。
その場合、MySQLやPostgresなどの個別コマンドを打つ必要がなく、簡単にSQLを実行させることができます。
Rails: RailsからDBを操作する
-
テスト環境(test)のDBを指定して、Raisのコンソールを起動します。(本番環境に接続する場合は「production」)
[app-user@app-folder]$RAILS_ENV=test bin/rails console
-
起動したRailsのコンソールから、例としてDBのWorkテーブルから最後の1個のレコードを取得する場合は以下コマンドとなります。
Work.last()
-
同じくRailsのコンソールから、Workテーブルから最後から10個のレコードを取得する場合は以下コマンドとなります。
Work.last(10)
Rails: RailsからDBにレコードを追加・削除する。
-
既存のテーブルWorkに新規レコードを追加する。新規レコードは、name列(フィールド)に「作業01」と入力する。
Work.create(name: "作業01")
-
既存のテーブルWorkから既存レコードを削除する。
Work.find(name: "作業01").destroy
-
既存のテーブルWorkを削除する。
<対象のテーブルのみ削除>
Work.delete_all
<関連テーブルも含めて削除>
Work.destroy_all
Rails: テーブル内のレコードIDを指定して、特定のレコードを取り出す。
Ruby on Railsでは、データを登録する際に、データを区別する為にIDの列(フィールド)が自動で設定されるようになっています。このIDを使って、データ(レコード)を取り出すことができます。
-
Workテーブル上のidが63のタスク内容を表示させる。
Work.find(63)
-
Workテーブルのidが63のタスクを抽出する。そして、このidが63のタスクのname列(フィールド)データを「change」に書き換える。
w = Work.find(63) w.name = "change" w.save() <--このコマンドを打つとSQLが実行されます。
-
Workテーブルのidが63以上のタスクを抽出する。そして、これらのidが63以上のタスクのname列(フィールド)データを「change」に書き換える。
w = Work.where('id >= ?', 63) w.update_all(:status => "change")
補足: RailsのコマンドでDBに直接入ることもできます。
-
テスト環境(test)のDBに直接入ります。(本番環境に接続する場合は「production」)
[app-user@app-folder]$RAILS_ENV=test bin/rails db
-
DBに入ったあとは、直接SQL文を打つことができます。
例:select * from Works: