1

ここで少し初心者の質問です...私のレールアプリにはパーツのモデルがあり、必要に応じて管理者がパーツの価格に割引を適用できるようにしたいと考えています。私の部品モデルのディスカウントの値は整数です。部品モデル内に apply_discount というメソッドがあります

class Part < ActiveRecord::Base
  has_many :order_items
  belongs_to :category
  default_scope { where(active: true)}

  def apply_discount
    new_price = self.discount.to_decimal * self.price
    self.price - new_price
  end

割引のパーセンテージを入力するたびに、「未定義のメソッド `to_decimal' for 10:Fixnum」というエラーが表示されます。浮動小数点数または小数に変換するのに適切な割引を取得する方法はありますか? ありがとう

4

1 に答える 1

8

to_decimal整数のメソッドはありませんが、 to_f(to float) があります。割引率を機能させるには、100 で割る必要があります。

また、self.割り当てる場合を除き、使用する必要はありません。

def apply_discount
  price - ( discount.to_f / 100 * price )
end
于 2016-03-19T01:00:55.323 に答える