2012-10-20 31 views
-2

我有一个的has_many关系到一个章节的故事 与马平协会

页章的has_many的关系,我想返回我的故事的网页列表,并附有方法Stories.pages

对象
def pages 
    self.chapters.map do |c| c.pages end 
end 

这不是返回一个列表的列表 IVE使出这样

def pages 
    pages =[] 
    self.chapters.each do |c| 
    c.pages.each do |p| 
     pages << p 
    end 
    end 
end 

我是新来的红宝石,使用php和c#背景,我知道我可以通过直接在故事和页面之间建立关联或创建自定义查询(INNER JOIN)。

但想围绕地图包裹我的头,稍微减少方法。

道歉提前懒惰,并要求在此之前做了详尽的研究..

回答

0

无需创建自己的自定义的方法时,Rails已经提供了本作has_many :through associations

class Story < ActiveRecord::Base 
    has_many :chapters 
    has_many :pages, :through => :chapters 
end 
+0

感谢您指出这样的一个明显的答案。试图使用地图方法挂了电话 – user1760852

+0

@ user1760852这就是说,如果你在做纯Ruby,你可能想调用['flatten'](http://ruby-doc.org/core-1.9.3/) Array.html#method-i-flatten)将列表的列表变成一个单一的列表。 –