I don't know if you can get there just w/HM=>T, but you can fake out the last 
link w/a custom method.  This is working for me:

class Article < ActiveRecord::Base
  belongs_to :feed_entry
end

class FeedEntry < ActiveRecord::Base
  belongs_to :feed
  has_many :articles
end

class Feed < ActiveRecord::Base
  belongs_to :site
  has_many :feed_entries
  has_many :articles, :through => :feed_entries
end

class Site < ActiveRecord::Base
  has_many :feeds
  def articles
    arts = []
    self.feeds.each do |f|
      arts << f.articles
    end
    # Not sure if that uniq call is necessary...
    arts.flatten.uniq
  end
end

That gives me a my_site.articles collection which returns the union of all 
articles attached to any feed_entry attached to any feed attached to the Site.

HTH,

-Roy

-----Original Message-----
From: [email protected] 
[mailto:[email protected]] On Behalf Of sol
Sent: Wednesday, February 25, 2009 2:11 AM
To: Ruby on Rails: Talk
Subject: [Rails] Association through 2 intermediate Models


Hey,

I have an association chain like this:

Site has_many Feed(s) has_many FeedEntry(/ies) has_many Articles

where the reverse is always belongs_to:

Article belongs_to FeedEntry belongs_to Feed belongs_to Site

Now what I want is to get all articles that belong to a specific Site, 
something like Site.first.articles

I can't figure out how to do this, or if it's possible with has_many :through 
Can anyone give me a hint please?

Thank you


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to