嵌套has_many

时间:2010-03-24 14:16:42

标签: ruby-on-rails

我使用的是Rails 2.3.5。

Class User < ActiveRecord::Base
  has_many :phones
end

class Phone < ActiveRecord::Base
  has_many :frequency_bands
end

我想获得用户的所有frequency_bands。我知道我可以为用户编写def freq_bands方法,但我想知道是否可以为用户提供has_many freq_bands。通过这种方式,我可以将呼叫链接起来。

我想拥有的是

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

我认为可以使用此插件http://github.com/ianwhite/nested_has_many_through

嵌套has_many

但是如果可能的话,我想避免使用另一个插件,而只依靠rails。

2 个答案:

答案 0 :(得分:7)

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

工作得很好。如果手机本身也是一个has_many_through关系,你只需要嵌套的has_many_through插件,这不是你的例子。

(编辑:不要忘记最后一个属性前面的“:”)

答案 1 :(得分:0)

对于rails 3,请使用nested_has_many_through gem,对于3.1,据传这是本地工作。 (天文能够尝试自己。)