はじめに
Ruby on RailsのDB操作に慣れるための覚え書きも兼ねた完結型の筋トレセットです。
テーブル削除の手順などは自分も含めた初心者にとって少し複雑だと思いますので、繰り返し練習などでお役に立てば幸いです。
すでにお使いのRailsアプリにデータベースがインストールされていることを前提にしているので、データベース作成がまだの方は「rails db:create」でデータベースをご用意ください。
環境
Ruby 2.7.2
Rails 6.0.3
テーブルの新規作成
まず、ターミナルからRailsアプリのあるディレクトリに移動する。
> cd (フォルダのアドレス)
モデル作成のためのマイグレーションファイルを作成。
(例:モデル名「User」、フィールド名「name」、「address」、「age」)
> rails g model User name:text address:text age:integer
この時点で「User」モデルを定義したクラスファイルとマイグレーションファイルが作成されますが、テーブルは生成されません。
テーブルの生成にはマイグレーションを行う必要があります。
> rails db:migrate
これで「User」モデルを基にした「users」テーブルが作成されます。
※テーブル名がモデル名と違うのはrailsの命名規則に拠る。
参考:「RailsのDBモデルの命名規則をまとめてみた」https://qiita.com/seri1234/items/8ca4b52d82390929195f
レコード追加~削除まで
Railsコンソールを起動します。
> rails console
新しい行にレコードを追加します。
irb(main):001:0> user = User.new
irb(main):002:0> user.name = "John Smith"
irb(main):003:0> user.save
レコードが追加されていることを確認します。
irb(main):004:0> users = User.all
確認ができたら、作成したレコードを削除します。
(find()の引数はレコードのインデックス)
irb(main):005:0> User.find(1).destroy
レコードを削除したら、Railsコンソールを終了してターミナルに戻ります。
irb(main):006:0> exit
モデルの削除からテーブルの削除まで
まず、モデル作成時に作られたファイルを削除します。
> rails destroy model User
これにより「User」モデルが削除されます。
この時点ではまだ「users」テーブルが残っていることに注意して下さい。
次にテーブル削除用マイグレーションファイルを作成します。
(「drop_table_users」は任意の名前でOK)
> rails generate migration drop_table_users
「アプリ名/db/migrate/」以下に先頭に数字が並んだ「~drop_table_users.rb」というマイグレーションファイルが作られます。
このファイルをテキストエディタで開き、「def change」内にテーブルを削除するための命令を追加して上書き保存する。
class DropTableUsers < ActiveRecord::Migration[6.0]
def change
# 以下1行を追加
drop_table :users
end
end
マイグレーションを実行します。
> rails db:migrate
テーブルが削除され、これで一連の流れが完了となります。