On Apr 13, 2010, at 3:15 PM, Pablo Marrero wrote:

Buenas gente, tengo una duda de como modelar una relacion y seguro por aca me la contestan al toque.. :)

Tengo tres modelos, Persona, Cargo, Empresa y necesito representar que una persona esta asignada en una empresa con un determinado cargo, entre determinadas fechas. En principio pensaba crear un modelo Asignacion, que haga el join correpondiente, con lo cual tendria en asignacion los atributos:
personas_id
cargos_id
empresas_id
fecha_desde
fecha_hasta

La duda que me surge es como ponerlo para que AR maneje esa relacion, se me ocurrio hacer lo mismo que hago cuando tengo una tabla de relacion entre dos modelos, utilizando el has_many through, pero no me queda claro si funciona cuando tengo que relacionar tres modelos.

alguna sugerencia de como expresar esto?

Yo haría así:

class Person < ActiveRecord::Base
  has_many :asignacions
end

class Asignacion < ActiveRecord::Base
  belongs_to :person
  belongs_to :empresa
  belongs_to :cargo
end

class Empresa < ActiveRecord::Base
  has_many :asignacions
end

class Cargo < ActiveRecord::Base
  has_many :asignacions
end

Probaste haciendo así?

No sé si es necesario usar el has_many :through

Ernesto Tagwerker
(646) 374-8240
http://etagwerker.com

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

Responder a