1

さまざまなカテゴリにさまざまなロジックを与える予定ですが、20の異なるモデルを作成する必要があるのか​​、それとも1つのモデルだけでロジックを配置できるのかわかりませんStoreCategory。ロジックの中には小さいものと大きいものがあります。

したがって、割引、オンライン、配送、小売などのさまざまなストアカテゴリがあり、それらに独自の特別なロジックを提供したい場合は、どうすればよいですか?

4

1 に答える 1

2

いい質問です。あなたの代わりに、クラス「Category」を作成し、他のクラスは最初から継承します。Category クラスでは、共有コードと特定のコードをサブクラスに配置します。必要に応じて、多態的な関連付けを使用できます。それはただのアイデアです。

編集1:コード例を追加

class StoreCategory < ActiveRecord::Base

  before_save :something_private

  def a_public_function
    #...
  end

  protected 
    def a_protected_function
      #...
    end

  private
    def something_private
      #something after save
    end
end

class DiscountCategory < StoreCategory
  def my_first_function
    #I could use a_public_function and a_protected_function
  end
end

class OnlineCategory < StoreCategory
  def a_protected_function
    #I could use a_public_function
    #I could override a_protected_function
    #I could use super to run the Category's function
  end
end

関数 something_private は、各サブクラスの保存後に呼び出されます。分かりやすく整理されていると思います。ApplicationController クラスのように機能します。

于 2012-07-24T12:35:20.970 に答える