如何将计算值添加到rails中的数组?

时间:2011-12-30 17:55:18

标签: ruby-on-rails-3

我有一个Product选项,我在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/ruby-1.9.2-p290@rails-3.1rc4/gems/railties-3.1.1/lib/rails/commands/console.rb:45:in `start'
    from /Users/justin/.rvm/gems/ruby-1.9.2-p290@rails-3.1rc4/gems/railties-3.1.1/lib/rails/commands/console.rb:8:in `start'
    from /Users/justin/.rvm/gems/ruby-1.9.2-p290@rails-3.1rc4/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 个答案:

答案 0 :(得分:1)

这里的问题是您调用计算分数的方法不存在。

当你创建它时,你可以调用类似的东西:

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