さまざまなカテゴリにさまざまなロジックを与える予定ですが、20の異なるモデルを作成する必要があるのか、それとも1つのモデルだけでロジックを配置できるのかわかりませんStoreCategory
。ロジックの中には小さいものと大きいものがあります。
したがって、割引、オンライン、配送、小売などのさまざまなストアカテゴリがあり、それらに独自の特別なロジックを提供したい場合は、どうすればよいですか?
さまざまなカテゴリにさまざまなロジックを与える予定ですが、20の異なるモデルを作成する必要があるのか、それとも1つのモデルだけでロジックを配置できるのかわかりませんStoreCategory
。ロジックの中には小さいものと大きいものがあります。
したがって、割引、オンライン、配送、小売などのさまざまなストアカテゴリがあり、それらに独自の特別なロジックを提供したい場合は、どうすればよいですか?
いい質問です。あなたの代わりに、クラス「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 クラスのように機能します。