2012-10-20 65 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)將列表的列表變成一個單一的列表。 –