1

我计划为不同的类别赋予不同的逻辑,我不知道我是否应该制作 20 个不同的模型,或者我是否可以只拥有一个StoreCategory模型并将逻辑放入其中。有些逻辑很小,有些逻辑很大。

所以如果我有不同的商店类别,比如折扣、在线、送货、零售等,并且想给他们自己的特殊逻辑,我该怎么办?

4

1 回答 1

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 类一样工作。

于 2012-07-24T12:35:20.970 回答