关于STI实施的两个简单问题

时间:2011-11-11 15:20:44

标签: ruby-on-rails sti

我正在为我的用户模型使用STI。我有一个User类,以及子类Seller和Customer。一个用户不能两者都有,所以我认为STI对这种情况没有问题。 我有两个问题:

  1. 如何限制用户实例的创建,因此只能创建卖家或客户?我想我可以验证Type的存在,但这对我来说并不合适。

  2. 我可以为卖家和STI客户提供额外的,不同的字段吗?怎么样?

1 个答案:

答案 0 :(得分:1)

您只能通过执行以下操作来保存用户和客户:

validates_inclusion_of :type, :in => [:customer, :user]

就你的第二个问题而言,答案是:添加列。如果您为客户添加列,则用户模型将忽略它们,因此没什么大不了的。这取决于您的用例,在某些情况下,最好避免STI。