User モデルと Profile モデルを分離していた Rails 6 アプリケーションに取り組んでいます。これにより、この投稿Rails 6: Only one profile per user should be createdに示すように、いくつかの問題が発生しました 。私は認証に Devise を使用しており、users コントローラーを追加することにしました。ユーザーモデルをプロファイルとして使用できるようにしたいのですが、そのDeviseがsign_up、sign_in、およびユーザーの作成を処理します。
show
、edit
、update
およびdestroy
これを「プロファイル」として使用するユーザーのコントローラーを作成しました。ただし、次の点について混乱しています。Deviseusers_controller
を から継承する方法で動作させるにApplicationRecord
は、この 2 つの競合はありませんか?
class DeviseCreateUsers < ActiveRecord::Migration[6.0]
def change
create_table :users do |t|
## Database authenticatable
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
## Profile information
t.string :full_name
t.string :city
t.string :bio
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
他のフィールドをDeviseCreateUsers
移行に追加しました。別のを作成する必要がありますcreate_users_migration
か? ユーザーのインスタンスを作成するために、ユーザーが電子メールとパスワードでサインアップする必要があり、フィールド:full_name
、:city
、を必ずしも必要としないようにしたいと考えています。:bio
ルート.rb
Rails.application.routes.draw do
devise_for :users, controllers: {
sessions: 'users/sessions'
}
resources :users, only: [:show, :edit, :update, :destroy]
resources :posts do
resource :comments, only: %i[show new create edit update]
end
end
私がDeviseのドキュメントに従ったとき: https://github.com/plataformatec/devise#configuring-controllersフォローイン について少し混乱しています。コマンドを実行します
$ rails generate devise:controllers users
log_in
、sign_up
これらのフォームのビューをusers
フォルダーに追加するか、生成される唯一のテンプレートであるnew.html.erb
フォームのみを追加するかについて、ドキュメントは不明確ですか。devise/sessions