Devise: создание профиля с использованием пользовательского контроллера с помощью Devise

Я работаю над приложением Rails 6, в котором я разделял модели User и Profile. Это вызвало некоторые проблемы, как показано в этом сообщении Rails 6: должен быть создан только один профиль для каждого пользователя Я использую Devise для аутентификации и решил добавить контроллер пользователей. Я хочу иметь возможность использовать модель пользователя в качестве профиля, и что Devise позаботится о sign_up, sign_in и создании пользователя.

Я создал контроллер пользователя для show, edit, update и destroy и использовал бы его как «профиль». Однако меня смущает следующее. Как заставить Devise работать с users_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? Я хочу, чтобы пользователь регистрировался с помощью электронной почты и пароля и не обязательно нуждался в полях _10 _, _ 11_, :bio для создания экземпляра User.

routes.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

введите описание изображения здесь

В документации неясно, следует ли добавлять представления _15 _, _ 16_ этих форм в папку users или только new.html.erb форму devise/sessions, которая является единственным сгенерированным шаблоном.


person Steven Aguilar    schedule 16.06.2019    source источник


Ответы (1)


Я не могу ответить на ваш вопрос полностью, но могу сказать, что вам не нужно заполнять все поля для создания экземпляра пользователя. Если у вас есть разные поля для регистрации и редактирования, все подойдет.

person InsolentWorm    schedule 17.06.2019
comment
Это не подходящий пост для ответа. Имейте в виду, что пользователи сообщества, скорее всего, являются техническими специалистами и ожидают ответа как такового. Это было бы более подходящим для комментария, поскольку оно не отвечает на вопрос и является дополнительной информацией, которую вы предоставляете. - person Steven Aguilar; 20.06.2019