我计划为不同的类别赋予不同的逻辑,我不知道我是否应该制作 20 个不同的模型,或者我是否可以只拥有一个StoreCategory
模型并将逻辑放入其中。有些逻辑很小,有些逻辑很大。
所以如果我有不同的商店类别,比如折扣、在线、送货、零售等,并且想给他们自己的特殊逻辑,我该怎么办?
我计划为不同的类别赋予不同的逻辑,我不知道我是否应该制作 20 个不同的模型,或者我是否可以只拥有一个StoreCategory
模型并将逻辑放入其中。有些逻辑很小,有些逻辑很大。
所以如果我有不同的商店类别,比如折扣、在线、送货、零售等,并且想给他们自己的特殊逻辑,我该怎么办?
这是个好问题。在您的位置,我将创建一个“类别”类,而我的其他类从第一个继承。在 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 类一样工作。