2011-12-30 2 views
0

레일스의 가중 점수를 계산하는 제품 옵션이 있습니다.레일에 배열에 계산 된 값을 추가하는 방법은 무엇입니까?

계산 된 제품 점수를 배열에 추가하는 배열을 반환하고 싶습니다.

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(:+) 
: 당신이 그것을 만든 때

것은, 당신은 뭔가를 호출 할 수 있습니다

관련 문제