SPA開発 7. Userモデル開発 #02
2019年11月07日に更新

Railsにユーザーテーブルを作成する【テーブル確認コマンド】

今回達成すること

今回は、ユーザーテーブルを作成していきます。

今回作成するカラム

今回作成するカラムは、①email、②password_digest、③activated、④admin となります。

company関連は、会社テーブルを作成した後に関連付けを行います。

最終的なユーザーテーブルはこのようになります。

カラム名 デフォルト 長さ NULL 内容
① email string 255 false
② password_digest string 72 false
③ activated boolean false false 認証プラグ
④ admin boolean false false 管理者プラグ
⑤ company_id FK 選択中の会社ID
⑥ company_count integer 0 false 会社の保有数

この記事の読み方

このカテゴリー「Rails apiとNuxt.jsでSPA開発」では、RailsとNuxt.jsに対するコマンドを以下のように分けています。

  • Railsに対するコマンド
myapp $ コマンド
  • Nuxt.jsに対するコマンド
frontend $ コマンド

今回はテーブル作成なので、Railsプロジェクト上でしか作業を行いません。

作業開始。まずはブランチの作成

最初にブランチを作成して、移動しておきましょう。

myapp $ git checkout -b user_modeling
myapp $ git branch

...
* user_modeling

OK!新しいブランチに移動しました。

ユーザーモデルの作成

ユーザーモデルを作成します。

rails generateコマンドを実行することで、テーブルを操作するモデルを作成することができます。

省略記法はrails gです。

myapp $ rails g model user

ファイルが作成されました。

Running via Spring preloader in process 57141
      invoke  active_record
      create    db/migrate/20191105003048_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml

次はカラムの作成です。

db/migrate/タイムスタンプ_create_users.rbに移動しましょう。

ちなみにここのファイル群は「マイグレーションファイル」と呼びます。

db/migrate/タイムスタンプ_create_users.rb
class CreateUsers < ActiveRecord::Migration[6.0]
  def change
    create_table :users do |t|
      t.string :email, null: false
      t.string :password_digest, null: false
      t.boolean :activated, null: false, default: false
      t.boolean :admin, null: false, default: false

      t.timestamps
    end
  end
end
  • null: false

    Null制約を付ける設定です。

    これによりカラムにNullを保存できないようになります。

  • default: false

    初期値を指定する設定です。

    初期値を設定しておくことで、データ作成時にわざわざ値を指定しなくても良くなりますし、Nullが格納される心配もなくなります。

さあ、上記編集が完了したらコマンドを実行してテーブルを作成します。

myapp $ rails db:migrate

無事作成されました。

== 20191105003048 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0326s
== 20191105003048 CreateUsers: migrated (0.0456s) =============================

もし、編集を失敗してコマンドを実行した場合

もし、マイグレーションファイルの編集を失敗してrails db:migrateを実行した場合。

再度、マイグレーションをやり直す必要があります。その時のコマンドは↓

myapp $ rails db:migrate:reset

テーブルをリセットするので、テーブル内のデータも全て削除されます。

その点だけ覚えておいてください。

ユーザーテーブルを確認する

今回はrails consoleコマンドで確認を行います。

なお、省略記法はrails cです。

  • consoleに移動
myapp $ rails c
  • ユーザーカラム名の確認
irb(main):002:0> User.column_names

=> ["id", "email", "password_digest", "activated", "admin", "created_at", "updated_at"]

OK!うまくできているようです。

  • consoleから抜ける
irb(main):002:0> exit 

rails dbで確認する方法

こっちの方が王道ですので、紹介しておきます。

  • SQLiteにログイン
myapp $ rails db
  • 現在のテーブル確認
sqlite> .tables

ar_internal_metadata  schema_migrations     users

OK!usersテーブルが存在しますね。

  • カラムの確認
sqlite> .schema users

CREATE TABLE IF NOT EXISTS "users" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar NOT NULL, "password_digest" varchar NOT NULL, "activated" boolean DEFAULT 0 NOT NULL, "admin" boolean DEFAULT 0 NOT NULL, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL);

ユーザーテーブルの制約まで表示されます。

より詳しくテーブルの確認を行い方は、rails db コマンドをおすすめします。

  • SQLiteから抜ける
sqlite> .quit

今回はここまで

ちょっと短くなってしまいましたが、今回はここまで。

ユーザーモデルを作成することができました。

さて次回は?

さて次回は、ユーザーモデルのバリデーションを行なっていきます。

同じ記事に書こうと思いましたが、ちょっと(と言うか、だいぶ)長くなりそうなので一旦区切りらせていただきました。

それではまた次回。

現在、カテゴリー「Rails apiとNuxt.jsでSPA開発」のデモアプリを構築中です。記事になるまでもう少々のお時間が必要です。ブログの更新が止まって申し訳ありません。デモアプリの進捗状況は こちらの記事 で随時お伝えしてまいります。
スポンサー広告
次の記事はこちらです
SPA開発
今日のTweet
スポンサー広告