Skip to content

RailsからDBを操作する。

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に直接入ることもできます。

  1. テスト環境(test)のDBに直接入ります。(本番環境に接続する場合は「production」)
    [app-user@app-folder]$RAILS_ENV=test bin/rails db

  2. DBに入ったあとは、直接SQL文を打つことができます。
    例:select * from Works:




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA