0

User モデルと Profile モデルを分離していた Rails 6 アプリケーションに取り組んでいます。これにより、この投稿Rails 6: Only one profile per user should be createdに示すように、いくつかの問題が発生しました 。私は認証に Devise を使用しており、users コントローラーを追加することにしました。ユーザーモデルをプロファイルとして使用できるようにしたいのですが、そのDeviseがsign_up、sign_in、およびユーザーの作成を処理します。

showeditupdateおよび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_insign_upこれらのフォームのビューをusersフォルダーに追加するか、生成される唯一のテンプレートであるnew.html.erbフォームのみを追加するかについて、ドキュメントは不明確ですか。devise/sessions

4

1 に答える 1

-1

質問全体にお答えすることはできませんが、ユーザーのインスタンスを作成するためにすべてのフィールドに入力する必要はないと言えます。サインアップ用と編集フォーム用に異なるフィールドがある場合は、うまく機能します。

于 2019-06-17T03:58:45.633 に答える