在Rails中为公司和个人客户建模

时间:2011-07-01 11:04:53

标签: ruby-on-rails ruby

My Rails应用程序使用STI,我有不同类型的公司和人员。例如,我有供应商,制造商和客户作为公司的类型。我还有员工,联系人和客户作为人的类型。

现在我想提及一个可以是公司客户或个人客户的客户。我可以使用哪种方法/我应该将这两种不同的实体合并为一种?所以我可以从订单中引用客户?

1 个答案:

答案 0 :(得分:0)

您可以使用:

Order      
   belongs_to :company
   belongs_to :person
end

并且有两个外键 - 然后添加一些验证以确保填写其中一个,然后可能添加一个“客户”方法,该方法返回相关公司或个人,具体取决于使用哪个。

OR,创建一个单独的Customer模型(和表),它具有这两个相同的两个外键,然后Order可以只是belong_to :customer。如果您希望在客户级别存储其他数据(例如信用额度或结算明细),则第二种方法可能更为合适,并且可能更长期更清洁。

另外,您可以重新考虑您的业务逻辑,并坚持所有订单属于一个人,即使该人是公司的员工并代表公司购买。

˚F