У меня есть опция 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
, но не смог правильно написать блок.