在我的理解中,下面的ruby表達式應該產生相同的結果。
顯然我失去了一些東西,這是一個太嚴重的錯誤被忽視......以上在Ruby中計數數組元素(count()函數的意外結果)
# returns the number of ALL elements in the array
count = @quotation.quotation_items.count { |x| x.placement == current_placement}
# Does what I expect
count = (@quotation.quotation_items.find_all { |x| x.placement == current_placement }).length
quotation_items
是一個ActiveRecord has_many
協會
我以爲ActiveRecords協會實現Enumerable協議... –
它是CollectionAssociation方法,而不是計算(請參見鏈接) – Ilya
ActiveRecord計數總是觸發一個SELECT COUNT(...)上的數據庫 - 它是不一樣的Enumerable#count – mccalljt