ruby-on-rails - formularios - validaciones rails
Los raíles diseñan agregar campos al formulario de registro cuando tienen ITS (1)
Espero comprenderlo bien: creo que aún no has entendido el concepto de ITS.
Tratemos de hacerlo más claro.
Las clases que deriva de un modelo orinal heredan todo de él. Su modelo original debería verse así:
class User < ActiveRecord::Base
devise :database_authenticatable
attr_accessible :email, :password, :password_confirmation, :remember_me
end
Para ser realmente una ITS, debe generar una migración para incluir el "tipo" en su modelo. Simplemente escribe:
rails g migration add_type_to_users type:string
rake db:migrate
Luego configura tu modelo de trabajador que es realmente simple:
class Worker < User
end
Como hiciste, incluye en tu archivo routes.rb:
devise_for :users, :companies, :workers
¡Ya terminaste!
Vaya a workers / sign_up, cree una cuenta y regrese a su terminal.
Desde aquí, escribe rails c
para iniciar la consola.
Ahora intente: User.all.last
, debería ver la cuenta que acaba de crear con un tipo ''worker''
Y prueba: Worker.last
, aquí de nuevo, encuentras la última cuenta creada.
Recuerde: Rails es tan genial como simple :)
Aquí están mis modelos:
class User < ActiveRecord::Base
has_one :worker, :class_name => ''Worker'', :foreign_key => :worker_id
devise :database_authenticatable
accepts_nested_attributes_for :worker
attr_accessible :worker_id, :email, :password, :password_confirmation, :remember_me, :workers_attributes, :worker_attributes, :name, :worker
end
class Worker < User
devise :database_authenticatable, :registerable
belongs_to :user
attr_accessible :name, :worker, :workers
end
Estoy tratando de agregar el nombre del campo a la forma de registro en http: // localhost: 3000 / workers / sign_up
El formulario de registro
<h2>Create Worker</h2>
<%= form_for resource, :as => resource_name, :url => registration_path(resource_name) do |f| %>
<%= devise_error_messages! %>
<table summary="Subject form fields">
<tr>
<th>Name:</th>
<td><%= f.text_field :name %></td>
</tr>
<tr>
<th><%= f.label :email %></th>
<td><%= f.text_field :email %></td>
</tr>
<tr>
<th><%= f.label :kodeord %></th>
<td><%= f.password_field :password %></td>
</tr>
<tr>
<th><%= f.label :bekraeft_kodeord %></th>
<td><%= f.password_field :password_confirmation %></td>
</tr>
</table>
<p><%= f.submit "Create Worker" %></p>
<% end %>
<%= render :partial => "devise/shared/links" %>
Pero recibo un error de plantilla: el trabajador modelo no responde al nombre. ¿Y cómo creo la asociación entre el usuario y el trabajador?
Saludos, Rails principiante