views:

37

answers:

1
+1  Q: 

nested has_many

I am using Rails 2.3.5.

Class User < ActiveRecord::Base
  has_many :phones
end

class Phone < ActiveRecord::Base
  has_many :frequency_bands
end

I want to get all the frequency_bands for a user. I know I can write a method def freq_bands for User but I would like to know if it is possible to have has_many freq_bands for a User. In this way I can chain the call.

What I would like to have is

class User < ActiveRecor::Base
   has_many :frequence_bands, :through => phones
end

I think it is possible to have nested has_many using this plugin http://github.com/ianwhite/nested_has_many_through

However if possible I would like to avoid using another plugin and rely solely on rails.

+4  A: 
class User < ActiveRecor::Base
  has_many :phones
  has_many :frequence_bands, :through => phones
end

Works just fine. You'd only need the nested has_many_through plugin if phones itself was also a has_many_through relationship, which it isn't in your example.

sepp2k
True, or if you wanted *another* level of depth. Of course, too many levels isn't good for the app. I've written a blog post that walks through how to do it: http://kconrails.com/2010/01/28/nesting-has_many-through-relationships-in-ruby-on-rails/ - use sparingly!
Jaime Bellmyer