@anasasiakiri4enko

Как создать Пользователя с профилем?

Добрый вечер!

Мне нужно после регистрации, чтоб у пользователя был свой профиль, который привязан именно к данному пользователю который зарегистрирован. Обьясняю: пользователь зарегистрировался, и сразу есть возможность изменить данные пользователя (либо добавить новые данные, вместе заглушек). Я использую гем devise, и, в данном случае имею ввиду не добавление при регистрации полей в базу а редактирование профиля, который будет привязан к моему акаунту.

У меня получается что, каждый зарегистрированный пользователь может редактировать либо один и тот же профиль либо одни и теже профили (если resources (Без s) ).

Модели юзер принадлежит профиль (has_one :profile и была попытка с has_many:profiles). А модели Профиль (belongs_to :user)

Беда у меня с этими ассоциациями(, наставьте на путь истинный! Как решить данную задачу? Как бы вы решили?
  • Вопрос задан
  • 353 просмотра
Решения вопроса 1
1. Добавить devise контроллер в приложение (rails generate devise:controllers users), отредактировать config/routes.rb для использования кастомного контроллера
devise_for :users,
             controllers: { registrations: "users/registrations" }

2 В create метод контроллера добавить resource.create_profile
class Users::RegistrationsController < Devise::RegistrationsController
  def create
    super
    if resource.save
        resource.create_profile
    end
  end

models/user.rb
has_one :profile, dependent: :destroy
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Dem1
@Dem1 Куратор тега Ruby on Rails
Ruby on Rails developer
К примеру, Вы можете перенаправить после регистрации в контроллер ProfilesController в new action.
Так же, если хочешь принудить пользователя заполнить поля, создай before_action :require_profile! и перенаправлять пользователя, пока не заполнил профиль. Только не забудь, убрать new и create из before_action для ProfilesController
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы