2013-01-07 107 views

回答

1

我最初的答案是正確的:它不能正常工作...

我想我終於說服了自己,因爲文檔應治...

嗯,我覺得有什麼在doc重要的理念是:你可以鏈與範圍類的方法。

但示例中的類方法的實現肯定是不對的。

+0

我用實際的數據。問題在於Article類(Article.titles)中的方法map()如何知道上下文,鏈的末尾或其他內容。 –

+1

由於您需要數組,因此您無法執行'Article.titles'。 'Article.featured.titles'與'[article1,article2] .map(&:title)''是一樣的。不清楚? – apneadiving

+0

此代碼適用於您? –

1

這工作,因爲返回的對象(AR ::關係)接受3種方法:

1)AR ::關係像 '天然' 的方法:其中,:包括:連接,:限制等。 ..

2)可枚舉方法。他們中的大多數都委託給範圍集合,即Array。

3)其他方法:通過「method_missing的」委託給基類

所以,在該部分的API文檔(與類的方法鏈接)是錯誤的:)

+0

真的嗎?請檢查您的控制檯。 –

+1

我的意思是,你寫道:未定義的方法'地圖'類。它不應該返回新的範圍或任何。 –

1

如果這個特殊的行爲是Rails中3.X一樣,因爲它是在Rails的4.x版,那麼你可以嘗試:

class Article < ActiveRecord::Base 
    scope :featured, where(:featured => true) 

    def self.titles 
    all.map(&:title) 
    end 
end 

Article.featured.titles 

@Nermin的回答禮貌了在Rails model class method for collection of objects這裏複製爲子孫後代。 Dupe-ish,但也許不是,因爲我相信Rails版本是不同的。

順便說一句,我也提出https://github.com/rails/rails/issues/21943因爲這充其量是一個誤導性的文件的問題,或在最壞的錯誤。

相關問題