Rails - Primary&辅助电话号码

时间:2012-10-03 05:25:24

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

我对如何在Rails中处理一个相当简单的问题大加赞赏。我需要为用户录制电话号码,我想为用户添加一个电话号码作为主要联系号码的功能。我已经有一个PhoneNumber类(多态,因为企业也有电话号码),所以这一切都已设置好。

我认为我可以通过以下两种方式之一做到这一点:

  1. 设置一个用户拥有多个电话号码的关联,并添加一个字段以指示该电话号码是否为该用户的主号码。
  2. 为主要电话号码设置单独的属性(因为用户只有一个),然后将辅助电话号码设置为has_many关联。
  3. 在任何一种情况下,当用户将新的电话号码指定为主电话号码时,我将不得不添加一些代码来改变所有相关电话号码的属性。我很好奇是否有更多有经验的用户认为这里有明确的最佳做法。

2 个答案:

答案 0 :(得分:0)

我更愿意制作两个模型PrimaryNumberSecondaryNumber。关系将是User has_one PrimaryNumberUser has_many(has_one取决于您允许的数量)SecondaryNumber。这样你就可以得到

 user = User.find(key)
 user.primary_number
 user.secondary_number(s)

为简单起见,因为只有一个Primary Number,您可以在User表格primary_number中添加列。然后,您将不需要PrimaryNumber表/模型

答案 1 :(得分:0)

由于用户可能有许多电话号码,因此has_many:phone_numbers关联是我将使用的关联。 :)