我正在为我的用户模型使用STI。我有一个User类,以及子类Seller和Customer。一个用户不能两者都有,所以我认为STI对这种情况没有问题。 我有两个问题:
如何限制用户实例的创建,因此只能创建卖家或客户?我想我可以验证Type的存在,但这对我来说并不合适。
我可以为卖家和STI客户提供额外的,不同的字段吗?怎么样?
答案 0 :(得分:1)
您只能通过执行以下操作来保存用户和客户:
validates_inclusion_of :type, :in => [:customer, :user]
就你的第二个问题而言,答案是:添加列。如果您为客户添加列,则用户模型将忽略它们,因此没什么大不了的。这取决于您的用例,在某些情况下,最好避免STI。