2011-12-30 64 views
0

我有一個產品選項,可以計算Rails中的加權分數。如何向軌道中的數組添加計算值?

我想返回一個數組,將計算的產品分數添加到數組中。我想:

products.inject {|p| p.exponential_discount_score(0.01) } 

不過的了:

NoMethodError: undefined method `exponential_discount_score' for 246.86645269006013:Float 
    from (irb):39:in `block in irb_binding' 
    from (irb):39:in `each' 
    from (irb):39:in `inject' 
    from (irb):39 
    from /Users/justin/.rvm/gems/[email protected]/gems/railties-3.1.1/lib/rails/commands/console.rb:45:in `start' 
    from /Users/justin/.rvm/gems/[email protected]/gems/railties-3.1.1/lib/rails/commands/console.rb:8:in `start' 
    from /Users/justin/.rvm/gems/[email protected]/gems/railties-3.1.1/lib/rails/commands.rb:40:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 

我想inject會的工作,但我想我做錯了什麼?我也試過.collect,但無法正確寫入塊。

回答

1

這裏的問題是您調用計算得分的方法不存在。

當你創造了它,你可以調用類似:

products.collect {|p| p.exponential_discount_score(0.01) }.inject(:+)