質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

410閲覧

deviseを使ったuserの作成について

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2022/09/26 04:01

編集2022/09/26 16:12

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/09/26 04:33

初期データも必要とするならマイグレーションに含むべき という話ですか?
退会済みユーザー

退会済みユーザー

2022/09/26 06:24

deviseを初めて使用するためマイグレーションファイルの書き方をいまいち理解できていません。 すみません。 userの情報(例:住所や電話番号、プロフィール写真)も掲載するときの掲載者の情報として表示するために一緒に追加して、userテーブルを作成したいのですが、userの個人情報のカラムはどの箇所に記入すればいいのでしょうか? 初期データというのは例えばサインアップする際に必要とするデータということでしょうか? 解釈が間違っていましたらすみません。
m.ts10806

2022/09/26 06:33

いえ、ユーザをどのように作る仕様にされているのかなと。 サンプルで1件用意しておくのか、画面から作るのか。 あと1点私が間違えてたのですが、初期データというとマイグレーションではなく「シーダー(Seeder)」ですね。 https://qiita.com/takehanKosuke/items/79a66751fe95010ea5ee
退会済みユーザー

退会済みユーザー

2022/09/26 07:02

すみません。画面からユーザーを作成してテストしたいです。 最初の会員登録するときに :ユーザー名 :ユーザー名フリガナ :住所 :電話番号 :パスワード :パスワード を登録してサインアップするという流れにしたいです。 そこからユーザーの編集ページで :プロフィール写真 :プロフィール分 を追記できるようにするという形にしようと思っています。 なので、userテーブルには   t.string :telephone_number t.string :furiganaName t.string :address t.string :self_inroduction t.string :image を入れたいなと思っていたのですが、devise時マイグレーションファイルの書き方が通常のマイグレーションファイルと書き方が違うのかわからないために、質問させていただきました。
guest

回答1

0

ベストアンサー

追記していいのでしょうか?

Deviseが自動で作ったmigrationファイルにカラムを追記して良いかという質問だと思います。
個人レベルで考えると、どちらでも良いが答えになるかと思います。
追記しても良いし、追記せずにあたらしくmigrationを作っても良いかと思います。
あとから管理しやすいからmigrationを分けたりすることが多いのではないかと思いますが・・・

カラム追加パターン:https://qiita.com/yuki82511988/items/73659af9d1049bd1b256
マイグレーション追加パターン:https://qiita.com/nowshi/items/a7220036a684a9ac4bb4


あとから日本語化するならそれも含めて設定したほうが良いかと思います。
僕はよく下記を参考にしています。
https://ichitasu.com/devise-i18n/


その他データベース構造ですが、ユーザーとプロフィールは大きく分けると下記の2パターンになるかと思います。
①別のテーブルで作る(DeviseのUserテーブルとUserProfileテーブル)
②Userテーブルの中にUserProfileのカラムを追加する方法
調べていくと一長一短あるのですが、ひとまず②で進めるとあとあとの実装が簡単になるかと思います。

投稿2022/09/26 07:12

no1knows

総合スコア3365

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問