LoginSignup
0
0

More than 3 years have passed since last update.

Ruby on Railsでのテーブル作成→レコード作成、削除→テーブル削除の一連の流れ

Last updated at Posted at 2020-11-16

はじめに

Ruby on RailsのDB操作に慣れるための覚え書きも兼ねた完結型の筋トレセットです。

テーブル削除の手順などは自分も含めた初心者にとって少し複雑だと思いますので、繰り返し練習などでお役に立てば幸いです。

すでにお使いのRailsアプリにデータベースがインストールされていることを前提にしているので、データベース作成がまだの方は「rails db:create」でデータベースをご用意ください。

環境

Ruby 2.7.2
Rails 6.0.3

テーブルの新規作成

まず、ターミナルからRailsアプリのあるディレクトリに移動する。

console
> cd (フォルダのアドレス)

モデル作成のためのマイグレーションファイルを作成。
(例:モデル名「User」、フィールド名「name」、「address」、「age」)

console
> rails g model User name:text address:text age:integer

この時点で「User」モデルを定義したクラスファイルとマイグレーションファイルが作成されますが、テーブルは生成されません。

テーブルの生成にはマイグレーションを行う必要があります。

console
> rails db:migrate

これで「User」モデルを基にした「users」テーブルが作成されます。

※テーブル名がモデル名と違うのはrailsの命名規則に拠る
参考:「RailsのDBモデルの命名規則をまとめてみた」https://qiita.com/seri1234/items/8ca4b52d82390929195f

レコード追加~削除まで

Railsコンソールを起動します。

Railsコンソール
> rails console

新しい行にレコードを追加します。

Railsコンソール
irb(main):001:0> user = User.new
irb(main):002:0> user.name = "John Smith"
irb(main):003:0> user.save

レコードが追加されていることを確認します。

Railsコンソール
irb(main):004:0> users = User.all

確認ができたら、作成したレコードを削除します。
(find()の引数はレコードのインデックス)

Railsコンソール
irb(main):005:0> User.find(1).destroy

レコードを削除したら、Railsコンソールを終了してターミナルに戻ります。

Railsコンソール
irb(main):006:0> exit

モデルの削除からテーブルの削除まで

まず、モデル作成時に作られたファイルを削除します。

console
> rails destroy model User

これにより「User」モデルが削除されます。

この時点ではまだ「users」テーブルが残っていることに注意して下さい。

次にテーブル削除用マイグレーションファイルを作成します。
(「drop_table_users」は任意の名前でOK)

console
> rails generate migration drop_table_users

「アプリ名/db/migrate/」以下に先頭に数字が並んだ「~drop_table_users.rb」というマイグレーションファイルが作られます。

このファイルをテキストエディタで開き、「def change」内にテーブルを削除するための命令を追加して上書き保存する。

1**********9drop_table_users.rb
class DropTableUsers < ActiveRecord::Migration[6.0]
  def change
    # 以下1行を追加
    drop_table :users
  end
end

マイグレーションを実行します。

console
> rails db:migrate

テーブルが削除され、これで一連の流れが完了となります。

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