Модель профиля для пользователей Devise?

Я хочу расширить форму регистрации моей установки. Я создал модель профиля и задаюсь вопросом, как я могу добавить конкретные данные формы к этой модели. Где находится UserController разработчика?

Заранее спасибо!

5 Solutions collect form web for “Модель профиля для пользователей Devise?”

Предполагая, что у вас есть модель пользователя с has_one профиля has_one , вам просто нужно разрешить вложенные атрибуты в User и изменять вид регистрации вашего устройства.

Запустите команду rails generate devise:views , а затем измените вид registrations#new.html.erb как показано ниже, с помощью вспомогательного fields_for form, чтобы ваша форма registrations#new.html.erb вашу модель Profile вместе с вашей моделью пользователя.

 

Sign up

< % resource.build_profile %> < %= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %> < %= devise_error_messages! %>

< %= f.label :email %>

< %= f.text_field :email %>

< %= f.label :password %>

< %= f.password_field :password %>

< %= f.label :password_confirmation %>

< %= f.password_field :password_confirmation %>

< %= f.fields_for :profile do |profile_form| %>

< %= profile_form.label :first_name %>

< %= profile_form.text_field :first_name %>

< %= profile_form.label :last_name %>

< %= profile_form.text_field :last_name %>

< % end %>

< %= f.submit "Sign up" %>


< %= render :partial => "devise/shared/links" %> < % end %>

И в вашей модели пользователя:

 class User < ActiveRecord::Base ... attr_accessible :email, :password, :password_confirmation, :remember_me, :profile_attributes has_one :profile accepts_nested_attributes_for :profile ... end 

Чтобы добавить ответ mbreining, в Rails 4.x вам нужно будет использовать сильные параметры, чтобы можно было хранить вложенные атрибуты. Создайте подclass controllerа регистрации:

 RegistrationsController < Devise::RegistrationsController def sign_up_params devise_parameter_sanitizer.sanitize(:sign_up) params.require(:user).permit(:email, :password, profile_attributes: [:first_name, :last_name]) end end 

Это не очень понятно из вашего вопроса, но я предполагаю, что ваша модель Devise – это User и вы создали другую модель Profile , принадлежащую пользователю.

Вам нужно будет создать controller для вашей модели пользователя с rails g controller users .

Вам также нужно будет генерировать представления для ваших пользователей с помощью rails generate devise:views чтобы пользователь мог добавлять информацию профиля, когда он создает свою учетную запись.

Оттуда это точно так же, как и любая другая модель: создать экземпляр пользователя и профиля и связать их. Затем в controllerах используйте current_user.profile для доступа к профилю текущего пользователя.

Обратите внимание, что если вы собираетесь управлять пользователями таким образом, вам необходимо удалить :registerable модуль из модели User (также читайте https://github.com/plataformatec/devise/wiki/How-To:-Manage -sers-through-a-CRUD-интерфейс )

Другой способ, чтобы не создавать ресурс здания в представлении, – это переписать controller разработки, и, точнее, новый метод, все, что вам нужно сделать, это изменить его на:

  def new build_resource({}) resource.build_profile respond_with self.resource end 

Я рекомендую посмотреть, как создать профиль для разработчиков, чтобы получить более свежий ответ на тот же вопрос и использовать Rails 4 + Devise

Давайте будем гением компьютера.