LoginSignup
2
3

【Rails】コンソールを使いこなそう!レベル1 〜基本的な操作編〜

Last updated at Posted at 2024-02-17

コンソールの基本

コンソールとは、プログラムの出力を実際に表示するものです。
極端にいえば、1+1と入力すれば2が返ってきます。

>irb(main):001:0>  1+1
=> 2

これを利用して、モデルを作ったり中身を確認したりもできます。

コンソールで実行できたことはそのままコードで使えるので、実装前に確認することでエラーを未然に防ぎつつ、着実にコーディングが行えるようになります。

コンソールの起動 ・ 終了

railコンソールは、ターミナル上でrails cと打つと起動しexitで終了します。

コンソール
$ rails c # 起動
>irb(main):001:0> exit # 終了(ショートカットはcontrol + d)

rails cで作成・編集したデータは、データベースに保存されます。

しかし試作の度にデータが作られるのは困る場合があります。
そんな時はrails c -sを使うと、データは保存されずに全てロールバックします。

コンソール
$ rails c -s # このコマンドで起動した場合、作成したデータは保存されない

データのCRUDをコンソール上で行う

事前準備

確認用のモデルを作成します。
名前が空白だとエラーになるバリデーションも追加しておきます。

model/user.rb
class User < ApplicationRecord
  validates :name, presence: true # 名前が空欄だとバリデーションエラーになる
end

作成

データを作るには、create!()メソッドを使用します。
引数には、カラム名: 内容といった形でデータを登録していきます。

コンソール
irb(main):001:0> User.create!(name: "Alice")

!が無くても生成自体はできますが、生成がうまくいかなかった時にエラー出るので、入れておくと良いでしょう。

コンソール
irb(main):001:0> User.create!(name: nil) # !をつけると、バリデーションエラーが表示される
~ 省略 ~ 
`raise_validation_error': Validation failed: Name can't be blank (ActiveRecord::RecordInvalid)

irb(main):002:0> User.create(name: nil) # エラーの原因が分からない
  TRANSACTION (0.1ms)  BEGIN
=> #<User:0x000000013580d960 id: nil, name: nil, created_at: nil, updated_at: nil>

確認

簡易的に確認するのであれば、以下3つのメソッドが使えます。

コンソール
irb(main):001:0> User.all   # 登録済みの全ユーザーを返す
irb(main):002:0> User.first # 一番最初に登録したユーザーを返す
irb(main):003:0> User.last  # 一番最後に登録したユーザーを返す

※確認方法はたくさんあって書ききれないので、次回まとめます。findとかwhereとか

更新

update!()メソッドを使うと、作成済みのデータの一部を更新できます。
まず、更新したいデータを変数に登録します。

コンソール
irb(main):001:0> user = User.first
=> #<User:0x00000001366ce828 id: 1, name: "Alice", 〜省略〜

次に、updateメソッドで更新したいカラムを更新後の内容を指定します。
特にエラーがなければ、これで更新されます。

コンソール
irb(main):002:0> user.update!(name: "Cheshire")

確認すると、名前が更新されていることがわかります。

コンソール
irb(main):003:0> user.name
=> "Cheshire"

削除

データの削除はdestroy!メソッドで行います。
まず、現在登録されているユーザーを確認してみましょう。

コンソール
irb(main):001:0> User.all.pluck(:name) # pluckは特定の要素だけ抜き出して配列化するメソッド
=> ["Alice", "Bob", "Catherine"]

次に、一番最初のデータを削除してみます。
updateの時と同様、変数にデータを登録してから削除します。

コンソール
irb(main):002:0> user = User.first
irb(main):003:0> user.destroy!

ではもう一度、ユーザーを確認してみます。

コンソール
irb(main):004:0> User.all.pluck(:name)
=> ["Bob", "Catherine"]

Aliceが削除されていることがわかります。

destroy!を試すときは、rails c -s で起動するのがおすすめです。
コンソール終了後にデータが元に戻るので。

まとめた経緯

絶対使えた方が便利なのに全然使いこなせていなかったので、わかる範囲でまとめてみることにしました。長くなりそうだったのでレベル別に。
これで手戻り減るといいな〜。

次回へ続く!

2
3
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
2
3