コンソールの基本
コンソールとは、プログラムの出力を実際に表示するものです。
極端にいえば、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をコンソール上で行う
事前準備
確認用のモデルを作成します。
名前が空白だとエラーになるバリデーションも追加しておきます。
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 で起動するのがおすすめです。
コンソール終了後にデータが元に戻るので。
まとめた経緯
絶対使えた方が便利なのに全然使いこなせていなかったので、わかる範囲でまとめてみることにしました。長くなりそうだったのでレベル別に。
これで手戻り減るといいな〜。
次回へ続く!