2011-12-30 61 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(:+)