0
0

Railsコンソールでのデータ編集

Last updated at Posted at 2024-02-18

Railsでコンソールをもっと使って学習していこうと思い、コンソールでの基礎的なデータ編集のやり方をまとめました。

irbとは

「Interactive Ruby」の略。Rubyにデフォルトで用意されているデバックツール。

pryとは

pryの語源はよくわからなかったが、これもRailsに用意されたデバックツール。使用するにはGemのインストールが必要。Syntaxの色付けやインデントがされていて、irbよりも見やすいかも。
pry-byebugも一緒に入れると、binding.pryでプログラムを止めた際に1行ずつプログラムを先に進めるなどデバックをする際にできることが増える。

pry-byebugに関する参考記事

https://ichigick.com/rails-pry-byebug/

pryのインストール

Gemfileに以下のコードを追記し、ターミナルで$ bundle install をすれば使えるようになります。

Gemfile
gem 'pry-rails', :group => :development
gem 'pry-byebug', :group => :development

コンソールでデータベースの操作

コンソールの立ち上げ・抜け出し

$ rails cで立ち上げ、exitもしくはCtrl+Dで抜け出せる。

レコードの作成

レコードを作成する際は、createメソッドを使う。createの後に”!”(エクスクラメーションマーク)をつけると、データの作成に失敗した時エラーを返してくれます。

[1] pry(main)> モデル名.create(カラム名:"カラムの値")

実行例

[1] pry(main)> User.create!(name: "山本 一郎", age: 47, address: "福島県")
TRANSACTION (0.1ms)  BEGIN
  User Create (2.6ms)  INSERT INTO "users" ("name", "age", "address", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"  [["name", "山本 一郎"], ["age", 47], ["address", "福島県"], ["created_at", "2024-02-16 05:38:59.249919"], ["updated_at", "2024-02-16 05:38:59.249919"]]
  TRANSACTION (0.9ms)  COMMIT
=> #<User:0x00000001623dc508
 id: 1,
 name: "山本 一郎",
 age: 47,
 address: "福島県",
 created_at: Fri, 16 Feb 2024 05:38:59.249919000 UTC +00:00,
 updated_at: Fri, 16 Feb 2024 05:38:59.249919000 UTC +00:00>

レコードの取得

all

allメソッドで、そのテーブル(モデル)のレコードを全て取得できる。

[1] pry(main)> モデル名.all

#例
[1] pry(main)> User.all

find

findメソッドでレコードのidから取得できる。

[1] pry(main)> モデル名.find(id)

#例
[1] pry(main)> User.find(1)

#複数でも指定できる
[1] pry(main)> User.find(1, 3)

find_by

find_byメソッドで特定の条件にマッチした最初のレコードを取得できる。条件を指定して複数取得する場合はwhereメソッドを使う。

[1] pry(main)> モデル名.find_by(条件)

#例
[1] pry(main)> User.find_by(address: "静岡県")

where

whereメソッドで特定の条件にマッチしたレコードを複数で取得できる。

[1] pry(main)> モデル名.where(条件)

Railsドキュメント

レコードの内容変更

update

updateメソッドで指定したレコードの値を変更できる。

[1] pry(main)> 対象.update(カラム名1:1, カラム名2:2, カラム名3:3,,,)

#例
[13] pry(main)> User.find_by(name: "山本 一郎").update(address: "山形県")

レコードの削除

destroy

destroyメソッドでレコードを1つだけ削除できる。対象のレコードだけでなく、関連づけられたデータも自動的に削除される。

[1] pry(main)> 対象.destroy

#例
[1] pry(main)> User.find(1).destroy

destroy_all

destroy_allメソッドで複数の指定したレコードを削除できる。whereと一緒に使われる。対象のレコードだけでなく、関連づけられたデータも自動的に削除される。

[1] pry(main)> 対象.destroy_all

#例
[1] pry(main)> User.where(id:2..3).destroy_all

delete

deleteメソッドは、destroyメソッドと同じく1つのレコードを削除するメソッドだが、関連付けられたデータは削除されない。

[1] pry(main)> 対象.delete

#例
[1] pry(main)> User.find(1).delete

delete_allメソッドも、destroy_allメソッドと同じく指定した複数のレコードを削除するメソッドだが、関連付けられたデータは削除されない。

参考にしたサイト

  • 【Rails】コンソールからモデルを使ってテーブルの一覧表示やデータ追加・更新・変更・削除する方法(データベース操作)

  • しっかり使い分け!Railsでのfind, find_byの違い、使い方

  • 【Rails入門】consoleの使い方まとめ

  • RailsコンソールでModelを操作する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0