在这种情况下配置继承的最佳方法是什么?

时间:2013-08-18 18:59:48

标签: ruby-on-rails activerecord sti

所以这是场景。假设您有10个不同的供应商提供您销售的产品。现在,对于这种情况,假设每个供应商都有自己的订单处理方法,每个供应商都需要自己的类。这是一个很大的假设,但我试图在没有所有细节的情况下简化我的真实场景。

单表继承(STI)解决方案

class Supplier < ActiveRecord::Base
  has_many :products
  # Methods that can be inherited by each supplier go here
end

class MySupplier1 < Supplier
  # Custom per-supplier methods go here
end

class MySupplier2 < Supplier
  # Custom per-supplier methods go here
end

这个解决方案的一个奇怪之处在于您的供应商表中将有10行。例如,您将永远不会有多个MySupplier1实例。

这是另一种解决方案:

替代模块化解决方案

class Supplier < ActiveRecord::Base
  has_many :products
end

class Suppliers::Base
  # Methods that can be inherited by each supplier go here
end

class Suppliers::MySupplier1 < Suppliers::Base
  # Custom per-supplier methods go here
end

class Suppliers::MySupplier2 < Suppliers::Base
  # Custom per-supplier methods go here
end

通过这个解决方案,我觉得它感觉更模块化,但ActiveRecord供应商和Suppliers :: MySupplier1之间的关系真的很尴尬。基本上,我必须将供应商类存储在供应商表中,以便我知道要实例化哪个类进行处理。

有人认为有正确或错误,甚至可能是更好的方法吗?

0 个答案:

没有答案