我计划为不同的类别提供不同的逻辑,我不知道是否应该制作20个不同的模型,或者我是否只能拥有一个StoreCategory
模型并将逻辑放在那里。有些逻辑很小而有些逻辑很大。
所以如果我有不同的商店类别,如折扣,在线,交付,零售等,并希望给他们自己的特殊逻辑,我该怎么办?
答案 0 :(得分:2)
这是一个很好的问题。在你的位置,我会创建一个类“类别”,我的其他类继承自第一个。在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类相似。