Problema con has_one?

Saludos a la comunidad!!

tengo un problema con has_one es el siguiente tengo 2 tablas Alumnos y
Seriales; en Alumnoos voy a guardar los datos de un usuario y en
Seriales cuando el usuario se registra por primera vez se le genera un
serial que despues el usuario podra modificar…

CREATE TABLE alumnos
(
id bigserial NOT NULL,
nombre text NOT NULL,
telefono text,
correo text NOT NULL,
direccion text,
cedula text NOT NULL,
seriale_id integer,
apellido text NOT NULL,
usuario text NOT NULL);

CREATE TABLE seriales
(
id bigserial NOT NULL,
serial text NOT NULL,
CONSTRAINT seriales_pkey PRIMARY KEY (id)
)

Ok en mi tabla alumnos tengo una clave foranes la cual es seriale_id que
es la que me va a ser referencia a un serial.

tengo mis modelos:

class Seriale < ActiveRecord::Base
has_one :alumno

validates_presence_of :serial, :message=>'Clave invalidad'

end

class Alumno < ActiveRecord::Base
belongs_to :seriale
validates_presence_of :nombre, :apellido, :cedula, :usuario, :correo,
:message=>‘Campo requerido!’
validates_format_of :correo,
:with =>
/^([^@\s]+)@((?:[-a-z0-9]+.)+[a-z]{2,})$/i,
:message => ‘Correo invalido’
end

Estas son mis preguntas:
1.- en mi vista si coloco el siguiente codigo:
<%form_for :alumno, @alumno, :url=>{:action => :entrar} do |f| %>
Usuario:
<%= f.text_field :usuario, :live=> true, :size=> 15%>

<label for= "seriale_clave"Clave:

<%= f.password_field :serial, :live=> true, :size=> 10%>
<%end%>

me da un error el cual es: undefined method ‘serial’???

  1. Mas que una pregunta es una aclaratoria y es que quisiera preguntar
    si estableci bien mi relacion, pues lo que entiendo es lo siguiente un
    alumno va a tenere un serial y un serial le pertenece a un alumno,
    cierto???

Con respecto a la relación, esta cambiada ya que belongs_to significa
pertenece a y tu la tienes en alumno, cuando en realidad es serial que
pertenece al alumno.

Antes de una respuesta, quiero saber porque es necesario tener el model
Serial si solo tiene un valor y si es de un alumno y el alumno solo
tiene
una? no te parece que puede ser un campo de la tabla alumnos y así
simplificas todo?

saludos,
Juan P.

2008/7/21 Juan M. [email protected]:

Juan P. wrote:

Con respecto a la relación, esta cambiada ya que belongs_to significa
pertenece a y tu la tienes en alumno, cuando en realidad es serial que
pertenece al alumno.

Antes de una respuesta, quiero saber porque es necesario tener el model
Serial si solo tiene un valor y si es de un alumno y el alumno solo
tiene
una? no te parece que puede ser un campo de la tabla alumnos y así
simplificas todo?

saludos,
Juan P.

2008/7/21 Juan M. [email protected]:

El model serial lo hice con la intencion de que si un alumno no esta
registrado el usuario realiza su registro y se inviara por correo una
clave por defecto que luego el usuario podra modificar, y me gustaria
llevar en la tabla serial un registro de las claver que se han generado
aleatoriamente!!

Pregunta: Pero en una vista puedo hacer referencia a varios modelos???

A mi personalmente la aclaración de Juan P. me parece correcta, el
poner serial dentro de la tabla alumnos de todas formas, el error

me da un error el cual es: undefined method ‘serial’???

por que serial pertenece al modelo Seriale y al hacer en el form
form_for :alumno… do |f|
f.password_field :serial # estan intentando acceder a la propiedad
serial de alumno, y alumno no tiene esa propiedad

Tendría que ser algo como

<% form_for :alumno… do |f| %>
<%= f.text_field :usuario %>

<%= fields_for :seriale do |s| %>
<%= s.password_field :serial %>

<%end%>
<%end%>

Como no me explico muy bien te dejo esta dirección que viene como
tratar dos modelos en un form
http://railsforum.com/viewtopic.php?pid=3713

Saludos.