我目前正在开发一个 Ruby on Rails 应用程序,该应用程序的功能类似于特定于站点的社交网站。作为其中的一部分,网站上的每个用户都会有一个个人资料,他们可以在其中填写他们的联系信息(电话号码、地址、电子邮件地址、雇主等)。
对此建模的一个简单解决方案是,我允许用户输入的每条信息都有一个数据库列。然而,这似乎是武断和有限的。此外,为了支持允许用户输入任意数量的电话号码,需要添加另一个数据库表和连接。
在我看来,更好的解决方案是将用户输入的所有联系信息序列化到他们行中的单个字段中。由于我永远不会根据这些信息来调整 SQL 查询,因此这样的解决方案的效率不会降低。
理想情况下,我想使用 vCard 作为我的序列化格式。vCard 是在 Web 上存储联系信息的标准解决方案,重复使用经过测试的解决方案是一件好事。替代的序列化格式将包括简单地编组一个 ruby 哈希或 YAML。不管序列化格式如何,支持以类似 rails 的方式读取和更新这些信息似乎是一个主要的实现挑战。
那么,问题来了:有人见过这种方法在 Rails 应用程序中使用吗?是否有任何 Rails 插件或 gem 可以使这样的系统易于实现?
理想情况下,我想要一个acts_as_vcard 添加到我的模型对象中,该对象将为我处理编辑vcard 并将其保存回数据库。