Railsにユーザーテーブルを作成する【テーブル確認コマンド】
  • 2019.11.06に公開
  • 2020.06.26に更新
  • SPA開発
  • 7. Userモデル開発
  • No.2 / 6
「SPA開発」では、Nuxt.js v2.14未満が使用されています。 Nuxt.jsはv2.13~14で大きなバージョンアップがありました。それに伴い、書き方も大きく変化しています。 v2.14以上で書かれた「SPA開発」の続編は、カテゴリー「 Udemy 」 で公開しています。

今回達成すること

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

今回作成するカラム

今回作成するカラムは、①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

今回はここまで

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

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

さて次回は?

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

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

それではまた次回。

あなたの力になれること
私自身が独学でプログラミングを勉強してきたので、一人で学び続ける苦しみは痛いほど分かります。そこで、当時の私がこんなのあったら良いのにな、と思っていたサービスを立ち上げました。周りに質問できる人がいない、答えの調べ方が分からない、ここを聞きたいだけなのにスクールは高額すぎる。そんな方に向けた単発・短期間メンターサービスを行っています。
独学プログラマのサービス
SPA開発の投稿
1
  • 更新情報
  • /
  • #01
「Rails apiとNuxt.jsでSPA開発」のデモアプリを開発中...。【2020/05/19追記: このカテゴリーの更新を一旦終了といたします】
1
  • 今回作るアプリケーション
  • /
  • #01
Railsアプリの完成イメージ画像と作ろうと思った経緯
2
  • 今回作るアプリケーション
  • /
  • #02
今回作るRailsアプリの全体像と機能の整理
1
  • 開発環境を整える
  • /
  • #01
macにRailsをゼロからインストールする
2
  • 開発環境を整える
  • /
  • #02
Rails apiモードのプロジェクトを作成し、Gitにコミットする
3
  • 開発環境を整える
  • /
  • #03
Bitbucketに公開鍵を追加し、Railsプロジェクトをpushする
4
  • 開発環境を整える
  • /
  • #04
HerokuCLIのインストールとherokuアプリケーションの作成
1
  • RailsをHerokuにデプロイする
  • /
  • #01
Herokuのデータベース設定と開発に便利なgemを導入する
2
  • RailsをHerokuにデプロイする
  • /
  • #02
HerokuにPumaを導入するためのRailsセットアップ
3
  • RailsをHerokuにデプロイする
  • /
  • #03
Railsに"Hello"を表示してHerokuへデプロイする
1
  • RailsとNuxt.jsを共存させる
  • /
  • #01
【RailsとNuxt.jsの共存】Rails上にNuxt.jsのプロジェクトを構築しよう
2
  • RailsとNuxt.jsを共存させる
  • /
  • #02
Nuxt.jsからRailsへ、初めてのapi通信でHelloを表示しよう
3
  • RailsとNuxt.jsを共存させる
  • /
  • #03
Nuxt.jsにVuetify2.0を導入してFont Awesomeもインストールするぜ
4
  • RailsとNuxt.jsを共存させる
  • /
  • #04
初めてのRailsApiアプリの公開。Herokuにデプロイする準備と実際のデプロイまで
1
  • データベース設計
  • /
  • #01
データベースを正規化する前に、会計システムの勘定科目データを整理する
2
  • データベース設計
  • /
  • #02
会計システムのデータベース設計に挑む
1
  • バージョンアップ情報
  • /
  • #01
【ご報告】Nuxt.jsを2.10.2にバージョンアップしました
2
  • バージョンアップ情報
  • /
  • #02
【ご報告】Railsを6.0.0にバージョンアップしました
1
  • Userモデル開発
  • /
  • #01
本番環境と開発環境でRailsのSeedデータを切り替える
2
  • Userモデル開発
  • /
  • #02
Railsにユーザーテーブルを作成する【テーブル確認コマンド】
3
  • Userモデル開発
  • /
  • #03
【Rails】EachValidatorクラスを使ったEmailカスタムバリデーション【lib以下読み込み】
4
  • Userモデル開発
  • /
  • #04
【Rails】エラーメッセージの日本語化【i18nとja.ymlのセッティング】
5
  • Userモデル開発
  • /
  • #05
【Rails】開発・テスト・本番環境の全てにユーザーSeedデータ投入する
6
  • Userモデル開発
  • /
  • #06
【Rails】ユーザーモデルのバリデーションをテストする
1
  • ログイン周りのレイアウト設計
  • /
  • #01
【Nuxt.js】ログインフラグでレイアウトを切り替えるテクニック【2019/12/07追記あり】
2
  • ログイン周りのレイアウト設計
  • /
  • #02
【Nuxt.js】ウェルカムページのレイアウト構築【sassの導入】
3
  • ログイン周りのレイアウト設計
  • /
  • #03
【Nuxt.js】ログイン周りの入力フォームコンポーネント設計【2019/12/07追記あり】
4
  • ログイン周りのレイアウト設計
  • /
  • #04
【Nuxt.js】会員登録フォームを構築してサインアップページを完成させる
独学プログラマ
独学でも、ここまでできるってよ。
CONTACT
Nuxt.js制作のご依頼は下記メールアドレスまでお送りください。