我有一个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
但无法正确编写块。
答案 0 :(得分:1)
这里的问题是您调用计算分数的方法不存在。
当你创建它时,你可以调用类似的东西:
products.collect {|p| p.exponential_discount_score(0.01) }.inject(:+)