Hi,
I’m wondring if it is possible to have a “has_many” through two things
at the same time.
For instance:
If I do this,
class A
has_many :blops # blobs have things
has_many :blups # blups has things too
has_many :things, :through => :blops
has_many :things, :through => :blups
end
only the “things” through “blups” get retrieved (only the last hmt is
considered by AR).
I tried “has_many :things, :through => [:blops, :blups]” too…
How can I do this and get all the things through blops and blups?
Thanks!
aurels
Aurels wrote:
class A
has_many :blops # blobs have things
has_many :blups # blups has things too
has_many :things, :through => :blops
has_many :things, :through => :blups
end
The blop things and the blup things are really different associations,
so you can do:
class A
has_many :blops
has_many :blups
has_many :blop_things, :through => :blops, :source => :thing
has_many :blup_things, :through => :blups, :source => :thing
end
If you need to access all of the things together, then you can add an
accessor:
def things
blop_things + blup_things
end
However you won’t be able to use the association methods on this (ie.,
#find, #sum, etc…)
You can use find… but it’ll be the ruby array find… not the
association AR find… and you can use SUM, as it is inside Enumerable
class, not the association proxy.
Julian
Learn Ruby on Rails! CHECK OUT THE FREE VIDS (LIMITED TIME) NEW VIDEO
OUT 3rd APRIL
http://sensei.zenunit.com/
Yes it works. But It would be great to be able to use #find…
Thanks!
On Mar 31, 12:44 am, Mark B. [email protected]