【问题标题】:How best to model a company and it's address in Ruby on Rails如何最好地在 Ruby on Rails 中建模公司及其地址
【发布时间】:2012-10-01 11:09:19
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 model


    【解决方案1】:

    “premium”应与“being/representing a company”分开。我会选择一个单独的 Company 模型,有足够的字段用于地址等。

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

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

    【讨论】:

      【解决方案2】:

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

      我会这样设置你的验证:

      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
      

      【讨论】:

      • 您会在什么型号上进行升级操作?能不能高枕无忧?
      • 我会对公司采取升级行动。您可以通过一个标识公司是否已升级的字段(即,一个名为“upgraded”的布尔值或一个名为“state”的字符串)放心地执行此操作。用户正在与网站或 Web api 或其他东西交互的界面?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-09
      • 2011-04-25
      • 1970-01-01
      相关资源
      最近更新 更多