Как мне добавить поле в форму регистрации в Rails Devise, но не в пользовательскую модель?

#ruby-on-rails #devise

#ruby-on-rails #разработка

Вопрос:

Существует несколько ответов о том, как добавить поле в форму регистрации в Rails 4, если поле также является новым свойством пользовательской модели. Но как мне добавить поле в форму регистрации, которое не является частью пользовательской модели? В моем конкретном примере я хотел бы добавить поле названия компании в форму регистрации, которое затем будет использоваться для создания модели компании до создания пользовательской модели. Как бы я это сделал?

Комментарии:

1. Что произошло, когда вы просто попытались добавить поле в форму в качестве field_tag и посмотрели, что появилось в параметрах? 🙂

2. Во-первых, есть ли у вас пользовательский контроллер?

Ответ №1:

Спасибо вам обоим за ответ.

Ответ был таким же простым, как выполнение следующего для создания контроллеров devise:

 rails generate devise:controllers users
  

Затем обновление маршрута:

 devise_for :users, controllers: { registrations: 'users/registrations' }
  

Добавление form_tag в форму:

 <%= text_field_tag("company_name", nil, {class: 'form-control'}) %>
  

Затем обновите метод в контроллере регистраций, чтобы создать компанию:

 # POST /resource
def create
super do |resource|
  company_name = params[:company_name]
  company = Company.new({name: company_name})
  company.save!
end
  

конец

Комментарии:

1. В моем случае — мне все равно, существует компания или нет. Но если бы я это сделал, я полагаю, я мог бы сделать что-то вроде: Company.find_or_create_by(name: params[:company_name]);