2009/6/26 Diego Caliri <[email protected]> > Buenas, tiro un tema por si alguien ha tenido una situacion similar para > resolver. Estoy en la disyuntiva de usar *has_and_belongs_to_many* o *has_many > :thorugh > > *Primero explico un poco el dominio del problema: > > Por una parte tenemos User y por otra Structure. La Structure intenta > reflejar una determinada forma de organizar los usuarios. (esto para > relacionarlo con remuneraciones, comisiones, etc) por tanto una Structure > tiene que tener N Users relacionados. A su vez cada User puede estar en una > o varias Structure. El problema es que dentro de cada Structure cada User > puede jugar un papel u otro por tanto esa informacion la tengo que guardar > en la join table. > > En un principio habia creado una table structures_users y habia > implementado *has_and_belongs_to_many *pero después leyendo *The Rails Way > *me di cuenta que no es la mejor forma de hacerlo por distintas razones > que me van a traer problemas mas adelante. El libro recomienda usar para > estos casos *has_many :through* y explica como hacer las relaciones pero > no da ningun ejemplo ni dice nada acerca de donde (en que parte del codigo) > ni como asignar los atributos en la join table cuando creamos una instancia > del objeto relacionado. >
si entendi bien tu join table es roles, si queres modificar atributos de esta tabla podes hacer rol = usuario.roles[0] #elegis el primer rol rol.mi_atributo = valor rol.save si queres las estructuras de ese usuario haces usuario.structures para asignarle atributos a tu join table durante la creacion de la instancia podes utilizar los callbacks dentro de tu modelo por ejemplo before_save o after_save dependiento de tus necesidades class User < ActiveRecord::Base has_many :roles has_many :structures, :through => :roles protected def after_save #agrego un rol por defecto rol = Rol.new rol.atributo = valor rol.save roles << rol ........ end end Saludos > Paso unos paste de la parte de los 3 modelos donde estan las relaciones: > > http://pastebin.com/m2f9700b5 > > Ahora paso el StructureController (y tambien una parte del > ApplicationController que esta referenciada en el controller anterior): > > http://pastebin.com/m6e9ff46b > > Saludos > > Diego S. Caliri > > > > _______________________________________________ > Ruby mailing list > [email protected] > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar > > -- Lic. José Alfredo Ramirez IPCorp Desarrollo de Software & Soluciones IT Quintana 2228 3ro. C | Corrientes | Argentina http://www.ipcorp.com.ar
_______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
