我正在寻找一些关于我目前在 Rails 中实施自定义字段的计划的反馈。一般来说,我是 Rails 和应用程序开发的新手,如果有经验的人提出任何意见,我将不胜感激。
背景
该应用程序:跟踪食品和饮料品尝。
我要建模的内容:
- 用户创建一个新的样本类型。
- 他们称之为:“酒”
- 他们为自己的公司做出决定,他们希望跟踪以下属性:原产地、葡萄类型、公司、海拔、保藏温度等。
- 我的数据库对样本类型所做的唯一假设是它有一个名称。(例如咖啡、葡萄酒等)其余的都是用户指定的自定义字段。
现在已经创建了一个示例类型。
- 用户开始创建样品类型酒的样品。
- 他们选择创建样品,选择葡萄酒类型。
- 他们必须填写的字段是他们之前指定的字段。
- 在原产地他们放:法国,在葡萄类型中:他们放霞多丽等。
--
我的方法如下:
当用户创建示例类型时,将自定义字段存储为数组或某种字符串格式,并将其保存在名为 data 的列下。
样品类型
名称
酒
数据
[origin, grape_type, company, ...]
当用户想要创建 Wine 类型的样本时:我查找样本类型 wine,对于数据列中的每个键,它都会创建表单字段。当用户提交数据时,我创建了所有自定义字段名称及其对应数据的哈希。我将其序列化并将其存储在数据列中的哈希中,如下所示:
样品
类型
葡萄酒
数据
{ origin: "France", grape_type: "Pinot Grigio, ... }
我目前的计划是使用 PostgreSQL 的 hstore 来实现数据列中的散列。
我的问题是:
- 对于我正在尝试做的事情,这是一个有效的解决方案吗?
- 当用户更改他们想要的自定义字段时,我会遇到麻烦吗?
- 我应该考虑其他任何问题吗?
- mongodb 和其他此类数据库是此类模型的更好选择吗?
我一直在使用以下链接作为参考: http ://schneems.com/post/19298469372/you-got-nosql-in-my-postgres-using-hstore-in-rails http://blog.artlogic .com/2012/09/13/custom-fields-in-rails/
以及许多其他堆栈溢出帖子,但是似乎没有人以我上面提到的方式使用它。
任何意见表示赞赏。