Forum: Rails-ES Relacion ternaria

Posted by Martín Peña (martinpena)
on 2010-04-30 16:36
Relativamente nuevo en Rails !!!

Como modelarían estas relaciones???

Estoy teniendo problemas para modelar una relación ternaria, la idea es
que en una película un Nombre puede estar en mas de un Rol, como actor y
director por ejemplo, a su vez las relaciones son todas del tipo N-a-N,
el tema es que cada vez que creo una película se crean varias copias de
un registro en la tabla apariciones

Esto es un ejemplo del estado de la tabla luego de crear una película
con dos Nombres

id  pelicula_id  nombre_id  rol_id
----------------------------------------------
21  null    10    2
22  null    10    2
23  6    10    null
24  null    11    3
25  null    11    3
26  6    11    null
27  6    10    null
28  6    11    null

Y estos son los modelos

class Pelicula < ActiveRecord::Base
  has_many :apariciones, :dependent => :destroy
  has_many :nombres, :through => :apariciones
  has_many :roles, :through => :apariciones

  accepts_nested_attributes_for :nombres, :reject_if => lambda { |a|
a[:nombre].blank? }, :allow_destroy => true
  accepts_nested_attributes_for :roles, :reject_if => lambda { |a|
a[:nombre].blank? }, :allow_destroy => true
end

class Nombre < ActiveRecord::Base
  has_many :apariciones, :dependent => :delete_all
  has_many :peliculas, :through => :apariciones
  has_many :roles, :through => :apariciones

  accepts_nested_attributes_for :roles, :reject_if => lambda { |a|
a[:nombre].blank? }, :allow_destroy => true
end

class Rol < ActiveRecord::Base
  has_many :apariciones, :dependent => :delete_all
  has_many :peliculas, :through => :apariciones
  has_many :nombres, :through => :apariciones
end

Muchas gracias
Martín
Posted by Martín Peña (martinpena)
on 2010-05-03 20:57
La causa es un bug en la version 2.3.5 de rails con el uso de 
accepts_nested_attributes_for

https://rails.lighthouseapp.com/projects/8994/tick...
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.