deviseを使ったuserを使うために新しくプロジェクトを作り直して作成しています。
ユーザーモデルを作成するところで止まっています。
現状は
1.gem 'devise'をbundle installした
2. rails g devise:installをした
3.rails g devise user コマンド入力した
ここで止まっています。
問題はマイグレーションファイルの中身についてですが
作り直す前のプロジェクトのuserマイグレーションファイルは
class CreateUsers < ActiveRecord::Migration[6.1] def change create_table :users do |t| t.string :name t.string :email t.string :password_digest t.string :telephone_number t.string :furiganaName t.string :address t.string :self_inroduction t.string :image t.timestamps end end end
になっているのですが、deviseバージョンでも例えばtelephone_number(電話番号)や
address(住所)などもdeviseバージョンのマイグレーションファイルに
追記していいのでしょうか?
現状の作り直したdevise userのマイグレーションファイルはこちらです。
# frozen_string_literal: true class DeviseCreateUsers < ActiveRecord::Migration[6.1] def change create_table :users do |t| ## Database authenticatable t.string :name, null: false t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" ## Recoverable t.string :reset_password_token t.datetime :reset_password_sent_at ## Rememberable t.datetime :remember_created_at ## Trackable # t.integer :sign_in_count, default: 0, null: false # t.datetime :current_sign_in_at # t.datetime :last_sign_in_at # t.string :current_sign_in_ip # t.string :last_sign_in_ip ## Confirmable # t.string :confirmation_token # t.datetime :confirmed_at # t.datetime :confirmation_sent_at # t.string :unconfirmed_email # Only if using reconfirmable ## Lockable # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts # t.string :unlock_token # Only if unlock strategy is :email or :both # t.datetime :locked_at t.timestamps null: false end add_index :users, :email, unique: true add_index :users, :reset_password_token, unique: true # add_index :users, :confirmation_token, unique: true # add_index :users, :unlock_token, unique: true end end
まだ、rails db:migrateは行っていません。
参考サイト:
https://qiita.com/masayan-06/items/61b9d2be6ee3f67315f0
!追加
追加しようとしたコード(まだ実行していません)
# frozen_string_literal: true class DeviseCreateUsers < ActiveRecord::Migration[6.1] def change create_table :users do |t| ## Database authenticatable t.string :name, null: false --------ここに追加したい------------------------------------ t.string :telephone_number t.string :furiganaName t.string :address t.string :self_inroduction t.string :image --------ここに追加したい------------------------------------ t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" ## Recoverable t.string :reset_password_token t.datetime :reset_password_sent_at ## Rememberable t.datetime :remember_created_at ## Trackable # t.integer :sign_in_count, default: 0, null: false # t.datetime :current_sign_in_at # t.datetime :last_sign_in_at # t.string :current_sign_in_ip # t.string :last_sign_in_ip ## Confirmable # t.string :confirmation_token # t.datetime :confirmed_at # t.datetime :confirmation_sent_at # t.string :unconfirmed_email # Only if using reconfirmable ## Lockable # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts # t.string :unlock_token # Only if unlock strategy is :email or :both # t.datetime :locked_at t.timestamps null: false end add_index :users, :email, unique: true add_index :users, :reset_password_token, unique: true # add_index :users, :confirmation_token, unique: true # add_index :users, :unlock_token, unique: true end end
初期データも必要とするならマイグレーションに含むべき
という話ですか?
deviseを初めて使用するためマイグレーションファイルの書き方をいまいち理解できていません。
すみません。
userの情報(例:住所や電話番号、プロフィール写真)も掲載するときの掲載者の情報として表示するために一緒に追加して、userテーブルを作成したいのですが、userの個人情報のカラムはどの箇所に記入すればいいのでしょうか?
初期データというのは例えばサインアップする際に必要とするデータということでしょうか?
解釈が間違っていましたらすみません。
いえ、ユーザをどのように作る仕様にされているのかなと。
サンプルで1件用意しておくのか、画面から作るのか。
あと1点私が間違えてたのですが、初期データというとマイグレーションではなく「シーダー(Seeder)」ですね。
https://qiita.com/takehanKosuke/items/79a66751fe95010ea5ee
すみません。画面からユーザーを作成してテストしたいです。
最初の会員登録するときに
:ユーザー名
:ユーザー名フリガナ
:住所
:電話番号
:パスワード
:パスワード
を登録してサインアップするという流れにしたいです。
そこからユーザーの編集ページで
:プロフィール写真
:プロフィール分
を追記できるようにするという形にしようと思っています。
なので、userテーブルには
t.string :telephone_number
t.string :furiganaName
t.string :address
t.string :self_inroduction
t.string :image
を入れたいなと思っていたのですが、devise時マイグレーションファイルの書き方が通常のマイグレーションファイルと書き方が違うのかわからないために、質問させていただきました。
回答1件
あなたの回答
tips
プレビュー