0

我有一个“公司”资源。当用户注册一个免费帐户时,他们只需要输入一个电子邮件地址。当他们希望升级他们的帐户时,我需要从他们那里获取更多详细信息,例如他们的地址。如何最好地建模这个?

  1. 将地址详细信息存储在公司表中?
  2. 有一个单独的“地址”表与公司一对一映射,并且升级将在地址上进行新操作?
  3. 在公司资源上创建一个升级帐户并获取地址信息的操作?
  4. 创建一个名为“升级”的新资源,将附加地址信息添加到公司表中?

谢谢

4

2 回答 2

1

“溢价”应与“成为/代表公司”分开。我会选择一个单独的Company模型,有足够的字段用于地址等。

一个Company将属于:user,一个User将拥有一个:company

adr如果您需要有关地址使用哪些字段的提示,请参阅微格式 (http://microformats.org/wiki/adr)。

于 2012-10-01T11:38:11.537 回答
1

我可以看到您有一个单独的地址模型,或者只是将其存储在公司中。就个人而言,我可能会选择使用单独的模型,因为在任何给定的系统中,您都可能拥有与多个模型相关联的地址。另一个好处是它有助于将与地址相关的责任与公司分开。

我会像这样设置您的验证:

Class Company
  has_one :address
  validates_presence_of :address, :if => :upgraded?
  validates_presence_of :email
  ...
  private

  def upgraded?
    <true if user has upgraded, else false>
  end
end
于 2012-10-01T11:44:00.573 回答