我正在构建一个 Rails 应用程序,其中一个User可以有很多Addresses. AUser还需要一个主要帐单Address、主要运输Address和主要配置文件Address。这些主要字段可以指向相同的Address. AUser不能有多个 primary Address。
我创建了一个名为 的连接表AddressInfo,我在几个选项之间来回切换:
User在模型上创建与每个主 ID 对应的3 列Address(我认为这将消除对连接模型的需要)。- 向 中添加一个
primary布尔列AddressInfo,并确保在user_id,address_id和purpose( 目的是billing,shipping或profile) 范围内只有一个为真。 - 向 中添加
primary日期时间列AddressInfo,并使用最近更新的地址作为主地址(范围与选项 2 类似)。
也许这些选项不是最好的,但这是我迄今为止想出的。
任何有关如何解决此问题的帮助将不胜感激。
更新:
需要明确的是,一旦Address创建了 an ,它就应该始终属于那个User并且不可删除。前任。aUser将他们的主要帐单地址更改为新的Address:他们应该仍然能够检索那个旧Address地址(甚至可能再次将其设为主要地址)。如果我选择选项 1 并删除连接表,这意味着我需要一个user_idon Address。