从一个班轮中返回两步has_many关系中的所有记录

时间:2013-09-25 13:24:24

标签: ruby ruby-on-rails-3

免责声明:很抱歉这个奇怪的标题,找不到合适的标题。此外,以下代码只是一个快速的例子,我为不遵守本书的惯例而道歉。

所以在这个例子中,我只想把所有的衣服放在Array的房子里。鉴于布属于人,而人属于房子,我做了如下:

def clothes
  clothes = []
  current_house.people.each do |person|
    person << person.clothes
  end
  clothes
end

Ruby 1.9.3和Rails 3.2中是否有任何方法可以将此方法设为一个班次

提前致谢。

2 个答案:

答案 0 :(得分:3)

这一个班轮是:

class House < ActiveRecord::Base
  has_many :clothes, :through => :people
end

然后你可以打电话:

 current_house.clothes

答案 1 :(得分:1)

如果您不想在clothes模型中定义新的House关联,您仍然可以执行以下操作:

def clothes
  current_house.people.collect{ |p| p.clothes }.flatten
end

但我强烈建议选择BroiSatse的解决方案来定义新的关联。