0

我正在为我的用户模型使用 STI。我有一个用户类,以及卖方和客户的子类。用户不能两者兼有,所以我认为 STI 适合这种情况。我有两个问题:

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

  2. 我可以为 STI 的卖家和客户提供额外的不同字段吗?如何?

4

1 回答 1

1

您只能通过以下方式允许保存用户和客户:

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

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

于 2011-11-11T15:26:39.030 回答