0

Ruby on Rails (v4) では、モデル内のメソッドを介して価格を割引できるようにしたいと考えています。にTags適用されるルールがありますproduct。たとえば、aproductに 2 つtagsのルールがあり、1 つのルールで製品を 10 ドル割引するように指定され、2 つ目のルールで製品を 3 ドル割引するように指定されている場合、製品の価格を 2 つのルールの低い方に設定できる必要があります。

私の質問は次のとおりです。最初にルール@product.priceを適用できるようにするカスタムメソッドでメソッドをオーバーライドできますか?Tag

4

2 に答える 2

1

もちろん。price は属性であるため (私は推測しています)、いつでもProductクラス内で price を再定義できます。

例:

def price
  calculate_discount
end

次にcalculate_discount

def calculate_discount
  old_price = read_attribute(:price)
  # apply your rules here
end
于 2013-08-26T02:03:00.760 に答える
0

あなたは間違いなくできます。before_saveまたはそのようなものを使用して、が保存after_saveされるとすぐに割引を実行できます。@productこのようなものが役立つかもしれません:

def get_tags_and_discount
  self.tags.each do |tag|
    self.price = self.price - tag.discount
  end
end
于 2013-08-26T02:06:40.990 に答える