Я работаю над приложением 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
В документации неясно, нужно ли добавлять представления log_in
, sign_up
техформы в папку users
или только new.html.erb
форму devise/sessions
, которая является единственным генерируемым шаблоном.