Создание и управление пользователями и профилями в Rails

Я знаю, что есть несколько тем, касающихся этой темы, и, прочитав их, я до сих пор не могу найти лучший подход к моей ситуации. У меня есть модель Users, и я использую Devise для аутентификации. Я использую довольно много модулей Devise, которые добавили около 20 столбцов в модель моих пользователей. Я собираюсь добавить отдельную модель профиля, которая будет содержать около 18 столбцов.

Проблема в том, что после регистрации модуль Devise Confirmable перенаправляет его на страницу HOME и отправляет ссылку подтверждения на его электронную почту. Как только он подтвердит, что он попадает на страницу «Показать пользователя», которая должна отображать информацию о его профиле.

Я хочу, чтобы Пользователь заполнял информацию о своем профиле, прежде чем он сможет что-либо сделать на сайте. Все поля профиля (около 18 из них) являются обязательными и критичными с точки зрения авторизации и диктуют, что он может и чего не может сделать. Я не уверен, как это сделать?

1) Должен ли я просто иметь модель пользователя (это будет означать 40 столбцов в таблице Users) и создать многоэтапную форму? 2) Должен ли я иметь модель пользователя и модель профиля? 3) Если да, как я могу заставить пользователя заполнить его информацию о профиле до того, как он подтвердит свою учетную запись или сразу после? 4) Нужен ли мне контроллер профилей? Я не знаю, с чего начать!

0
nl ja de

1 ответы

На самом деле это очень просто. У вас могут быть разные модели для пользователя и профиля. У вас должен быть механизм для отметки, если пользователь заполнил его информацию о профиле (что-то вроде user.profile.nil? ). Теперь вам просто нужно создать метод перед фильтром, который перенаправит пользователя для создания страницы профиля, если у него его нет.

2
добавлено
Прежде, чем фильтр просто должен это сделать. Поэтому всякий раз, когда вызывается какой-либо метод контроллера, перед первым будет выполняться первый фильтр, а затем в зависимости от состояния пользователь будет перенаправлен или разрешен для выполнения этого действия.
добавлено автор Super Engineer, источник
Хорошо, у меня есть настройка, так что пользователь перенаправляется на страницу создания профиля при регистрации и входе в систему. Как я могу гарантировать, что пользователь не сможет ничего сделать на сайте до того, как его профиль будет сохранен?
добавлено автор pratski, источник
pro.ruby
pro.ruby
1 181 участник(ов)

Язык программирования Ruby Additional docs: https://rubyreferences.github.io/rubyref/ Invite: https://telegram.me/joinchat/Be4rsT2NuB3CyJaF26j1kA Кто хочет компилировать: @crystal_ru (его синтаксис основан на Ruby) Участник @proDOT

Ruby, Rails, Hanami | dry-rb
Ruby, Rails, Hanami | dry-rb
1 180 участник(ов)

https://telegram.me/rubyjob - Ruby Job По вопросам - @eugene_shved

Ruby School .us
Ruby School .us
1 045 участник(ов)

Чат-болталка для учеников руби-школы и не только. Правила: https://telegra.ph/Pravila-chata-Rubi-shkoly-03-13

Random Ruby Chat
Random Ruby Chat
589 участник(ов)

Правила публикации вакансий: https://t.me/codenamecrud/60865

Rubyata
Rubyata
333 участник(ов)

Коммюнити Ruby и Ruby On Rails Флуд не приветствуются. Вакансии можно публиковать только и ТОЛЬКО по пятницам с хештегом #вакансия.

Ruby Talks
Ruby Talks
236 участник(ов)

Национальная Флеймотека

RubyRush
RubyRush
189 участник(ов)

rubyrush.ru программирование для самых новичков

Rails Chat
Rails Chat
87 участник(ов)

You are welcome to discuss Ruby On Rails development process and other stuff