Hola buenas, tenco una duda en como construir unos modelos, os expongo
un caso
class A < ActiveRecord::Base
has_many bs
end
class B < ActiveRecord::Base
has_many cs
belongs_to a
end
class C < ActiveRecord::Base
belongs_to b
end
con este planteamiento, como puedo hacer de una manera limpia esto?
a.bs.cs
como lo tengo hecho ahora és a.cs_in_bs donde
class A < ActiveRecord::Base
has_many bs
def cs_in_bs
cs = []
self.bs.each{|b| b.cs.each{|c| cs << c if (cs & [c]).size == 0}}
end
end
pero no me gusta nada de nada, alguna solucion?
Here we go …
class A < ActiveRecord::Base
has_many bs
has_many cs, :through => :bs
end
Francesc
On Jan 7, 2008, at 12:28 PM, Lleir Borras M. wrote:
end
class A < ActiveRecord::Base
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es
–
name. Francesc E. i Martí
voice. +34 678.681.603
Collons… mira k es facil…
Gràcias!
On Jan 7, 2008, at 12:28 PM, Lleir Borras M. wrote:
end
class C < ActiveRecord::Base
belongs_to b
end
con este planteamiento, como puedo hacer de una manera limpia esto?
a.bs.cs
Dos posiblidades son:
a.bs.map(&:cs).flatten.uniq
o bien:
has_many :cs, :through => :bs
En este segundo caso has de recordar que solo puedes hacer consultas a
esa coleccion, los metodos para crear asociados no funcionan.
– fxn