Я работаю над приложением 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
, которая является единственным сгенерированным шаблоном.