2011-12-30 10 views
0

私はRailsの重み付きスコアを計算するProductオプションを持っています。計算された値をレールの配列に追加する方法は?

計算された製品スコアを配列に追加する配列を返したいと思います。

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(:+) 
:あなたはそれを作成したとき

することは、あなたのような何かを呼び出すことができます

関連する問題