0

Systemと呼ばれる属性を持つクラスと、この属性をprice持つSubsystemクラス ( belongs_to :system) がありpriceます。

問題は私のモデルにあります。system.price

1) システムには少なくとも 1 つのサブシステムがあります ( !system.subsystems.empty?): 価格をすべてのサブシステムの価格の合計にしたいと考えています。その場合、私のモデルには、サブシステムの価格を合計するためのループを含むメソッドの価格があります。

2) システムにはサブシステムがありません ( system.subsystems.empty?): 価格は、フォームに入力される単なる入力フィールドです。

私が直面している問題は、どの方法に従うかを「選択」する方法です...

誰でも私を助けることができますか?よろしくお願いします!!!

4

2 に答える 2

1

システムの価格をいつでも別の場所に保存し、必要に応じて使用することを選択できます。

class System

  has_many :subsystems

  def price
    subsystems.empty? system_price : subsystems.sum('price')
  end

  def system_price
    # maybe an active record attribute, this method might not exist
    25.00
  end

end
于 2013-08-30T15:24:32.167 に答える
0

モデルの price メソッドを単純に上書きできます。

def price
  if subsystems.empty? 
    self.attributes["price"] 
  else
    subsystems.map(&:price).sum
end
于 2013-08-30T15:25:04.580 に答える