Devise: создание «профиля» с использованием контроллера пользователей с Devise - PullRequest
0 голосов
/ 16 июня 2019

Я работаю над приложением 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?Я хотел бы, чтобы пользователь зарегистрировался по электронной почте и паролю и не обязательно нуждался в полях :full_name, :city, :bio для создания экземпляра пользователя.

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

enter image description here

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

1 Ответ

0 голосов
/ 17 июня 2019

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

...