Rails разработают регистрационную форму при наличии STI - PullRequest
4 голосов
/ 10 января 2011

Я не знаю, как создать работника и ассоциацию.Так что я могу связать их вместе.У меня есть тип colulm в пользователе.
Это моя форма (http://localhost:3000/workers/sign_up):

<h2>Create Worker</h2>

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

      <p><%= f.label :email %><br />
      <%= f.text_field :email %></p>

      <p><%= f.label :kodeord %><br />
      <%= f.password_field :password %></p>

      <p><%= f.label :bekraeft_kodeord %><br />
      <%= f.password_field :password_confirmation %></p>

      <p><%= f.submit "Create" %></p>
    <% end %>

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

Это мои модели:

Class Worker < User
devise :database_authenticatable, :registerable
end

Class Company < User
devise :database_authenticatable, :registerable
end

Class User < Appliaction::Base
devise :database_authenticatable, :registerable
end

Я хочу создать форму регистрации, которая создает пользователяи работник. У меня есть столбцы в таблице «Рабочие», такие как «Имя», «Возраст» и «Адрес», которые я хочу указать в регистрационной форме.

Если это будет вложенная форма и должна ли я создать связь между таблицей «Рабочий» и «Пользователь».

С уважением, Начинающий Rails

Ответы [ 2 ]

4 голосов
/ 03 марта 2011

Хорошо, вы нашли ответ, вам нужно добавить маршруты для ваших подклассов, а затем перенаправить пользователей на соответствующие маршруты, например

devise_for :companies
devise_for :workers

И тогда вы, вероятно, захотите сгенерироватьпросмотр каждого из них

script/rails generate devise:views companies

Если в вашем представлении нет существенных различий, вы можете просто отобразить файл из пользовательских шаблонов в шаблонах своих компаний, например,

render :file => 'users/registrations/new'

контроллеры и просмотр вы все еще будете использовать стандартную user_signed_in?

Надеюсь, это поможет, дайте мне знать, если вы найдете лучший способ

0 голосов
/ 10 января 2011

Я думаю, что вы ищете Worker has_one User. Я не думаю, что вам нужно наследовать ваш класс Worker от пользователя. Если вы хотите создать пользователя после создания Worker, вы можете сделать это с помощью after_create callback.

...