2014-03-31 91 views
0

這是一個簡化的什麼,我試圖解決的版本: 在Ruby 2.0.0,4.0.0的Rails,ActiveRecord的傳遞對象的參數爲對象方法

has_many銷售

Sale.find(1).bid = 1 
Sale.find(1).ask = 2 
Sale.find(2).bid = 10 
Sale.find(2).ask = 20 
etc 

當我寫這篇文章的方法:

class Segment 
    def add_stuff(param) 
    sales.map{ |s| s.param }.inject(:+) 
    end 
end 

問題:如何在bidask通過爲param並在塊內正確插入該參數?謝謝。

回答

0

主動紀錄協會,切勿使用map時可以使用pluck或其他查詢方法等,例如sum

def add_staff(param) 
    sales.sum(param) 
end 

只是爲了完整,這裏是如何與map做到這一點 - 但是請注意該圖是不是查詢方法慢得多且易出錯:

def add_staff(param) 
    sales.map {|s| s[param]}  # if param is name of the column on sales model. 
end 

或者更一般的,其中參數是關聯或自定義的名稱(非柱)方法

def add_staff(param) 
    sales.map(&param) # Or map {|s| s.send(param) } 
end 
+0

BroiSatse,謝謝......這是您第二次回答我的問題,我非常感激。我做了一個快捷的摘錄和總結,你爲我打開了一個全新的世界。我在那個時候,在我需要開始思考SQL查詢而不是僅僅做一些事情的時候。 – allenwlee