Hola paolo, en rails no se puede definir una primary key compuesta, pero
entiendo que queres definir basicamente una relacion NxN, para ello tenes 2
opciones que te provee el framework:

#Student
has_and_belongs_to_many :class_changes

#Class
has_and_belongs_to_many :student_changes

Este approach tiene la necesidad de la creacion de la tabla (por la cual
hacer el join), *sin id*, que resulta de la relacion Student N< --- >N
 Class:

#table students_classes
student_id | class_id | date ... (cualquier atributo extra que necesite la
relacion)

Por otro lado podes modelar lo mismo mediante el uso de la opcion :through
al definir la asociacion:

#Change (esta tabla si lleva atributo id)
belongs_to :student # foreing_key student_id
belogns_to :class    # foreing_key class_id


#Student
has_many :changes
has_many :classes, :through => :changes

#Class
has_many :changes
has_many :students, :through => :changes


Cual appoach utilizar depende si vas a necesitar manipular la relacion NxN,
es decir, la tabla por la que se hace el join, en el caso de que necesites
manipular los cambios de clases entonces el segundo approach seria el
adecuado a mi entender.


Saludos

El 26 de junio de 2011 16:06, Paolo Loran <[email protected]> escribió:

> A nadie le paso esto? que tuviera que definir un nuevo objeto tipo
> transaccion?? donde tuviera una primary key compuesta donde no tuviera id
> pero si numero de cliente, y fecha??
>
> poli
>
>
> 2011/6/25 Paolo Loran <[email protected]>
>
>> Mi idea era tener una tabla en BD que se llame ClassChanges que no tuviera
>> ID como PK sino que tuviera => student_id, date y class_id como primary key
>> En mi modelo habia hecho lo siguiente:
>>
>> #Student
>> has_many :class_changes
>>
>> #ClassChange
>> belongs_to :student
>> belongs_to :class
>>
>> #Class
>> has_and_belongs_to_many :class_changes
>>
>> no se si es correcto mi planteo
>>
>> Un estudiante puede tener muchos cambios de clases pero no puede tener mas
>> de uno para el mismo dia y clase.
>> Una clase puede estar relacionada a muchos cambios de clases.
>>
>> poli
>>
>>
>> 2011/6/25 Martin Aceto <[email protected]>
>>
>>> 2011/6/25 Paolo Loran <[email protected]>:
>>> > Hola a todos queria consultarles lo siguiente:
>>> >
>>> > Tengo un Alumno que posee cambios de clases a una fecha
>>> >
>>> > Student{name, address, dni} donde su primary key seria id (generada
>>> > automaticamente en migrations)
>>> >
>>> > por otro lado tengo:
>>> >
>>> > CambioDeClase{student_id, date, :class_id} donde su primary key no
>>> deberìa
>>> > ser id sino que deberìa ser => :student_id, :date, :class_id
>>> >
>>> > Es posible armar este tipo de objeto donde no me permita ingresar un
>>> mismo
>>> > alumno para la misma fecha a la misma clase?
>>> >
>>> > Saludos.
>>> > poli
>>> >
>>> > _______________________________________________
>>> > Ruby mailing list
>>> > [email protected]
>>> >
>>> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>>> >
>>> >
>>>
>>> Hola Paolo,
>>>
>>> no se como tenes armada la relación pero no te sirve validates_associated
>>> ?
>>>
>>>
>>> http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#method-i-validates_associated
>>>
>>>
>>> Saludos.-
>>>
>>> --
>>> Martin
>>> _______________________________________________
>>> Ruby mailing list
>>> [email protected]
>>> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>>>
>>
>>
>
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
>


-- 
Geronimo Diaz
v1 | services
[email protected]
[email protected]
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a