2013-07-30 46 views
0

我有2個Rails的4.0型號:滑軌(4)範圍的子模型返回的所有記錄

class Article 
     has_many :comments 
    end 


    class Comment 
     belongs_to :article 
     scope :created_desc, :order => "created_at DESC" 
    end 

我正在尋找的是能夠通過創建範圍的文章的評論排序行爲。

但是這個代碼

article = Article.find(1) 
    article.comments.created_desc 

觸發一個新的SQL查詢中跑:

SELECT "comments".* FROM "comments" ORDER BY created_at DESC 

我預計,考慮到代碼運行在文章的評論的範圍,只得到然而,屬於該文章的評論,我收到所有評論。

這是非常直觀的我發現。任何人都可以提出正確的方法來做到這一點?有些東西告訴我,在通過Article ID過濾的評論中增加另一個範圍是一種會被嘲笑的方法。那麼正確的方法是什麼?

預期感謝

回答

3

的問題是,如果沒有拉姆達(=>懶惰評估)已被取消,用法作用域似乎產生的Rails 4.本工程奇怪的行爲,只是測試在Rails應用4左右逢源:

scope :created_desc, lambda { order('created_at DESC') } 
1

你也可以使用 - >。

scope :created_desc, -> { order('created_at DESC') }