【发布时间】:2015-02-05 05:09:08
【问题描述】:
来自我的another question:
我需要实现的是:使用它们创建多个类别 自己指定的信息字段(即汽车有不同的字段 宠物),一旦创建了这样的类别,我需要的命令将是 调用并为每个类别制作一个新表。我知道我可以 将所有字段存储为某种字符串,然后对其进行处理以显示 它正确,但我需要为我的网络应用程序提供高级搜索功能,并且 为每个类别创建单独的表似乎是最好的方法 实现这一目标。我真的很想听听这个的替代方案
所以我遇到这种情况,我需要类别来保存该特定类别所需的所有输入字段。所以在管理中,我有这个表格,我可以在其中添加类别名称、一些其他相关信息到类别本身,然后这些字段将收集有关 HTML 字段 的信息在进入该特定类别时呈现给用户。
例如,这将是一个 Dog 类别:
- 类别名称:狗
- 已启用类别:1
- 父类:宠物
- 字段:
- 标题 - 文本字段(将自动添加到每个类别)
- 品种 - 选择字段
- 年龄 - 数字字段
- 颜色 - 文本字段
- 价格 - 数字字段(将自动添加到每个类别)
- 说明 - 文本区域字段(将自动添加到每个类别)
所以现在在这个阶段,当用户为 Dog 类别创建所有这些特定字段时,我无法弄清楚当用户点击提交按钮以保存此类别时会发生什么。我想到了这两种解决方案:
- 为每个新类别创建一个新模型/表(阅读上面的链接问题),将所有 HTML 字段作为列,并在
categories表上存储一行,其中包含有关此类别的一些基本信息 - 将所有内容存储在
categories表中,并有一个fields_json列,该列将存储所有HTML 字段信息(我实际上不会存储HTML,而是这些字段的基本信息,然后在a 中动态创建HTML 表单字段控制器)作为 JSON 字符串。我可以在create上很好地呈现这些字段,但在update上填充这些字段(可能)会很麻烦,并且使用这种替代方法搜索功能不会很有效。
所以我正在寻找第三种选择,以便我可以解决我的问题。什么是解决此问题的有效方法,并且能够拥有具有不同输入字段的类别,并且还能够有效地对这些类别执行搜索?
我正在处理的项目是在 Ruby on Rails 4 中创建的,数据库在 MySQL 中。
【问题讨论】:
-
你能切换到 Postgres 吗?它有一个 JSON 类型,您可以使用它来有效地查询动态属性。 Rails 将正确处理这种类型,因此您只需使用哈希。
-
我以前从未使用过 Postgres,所以我对使用它没有信心。
-
它的基本功能和mysql没有太大区别。恕我直言,这将是完成这项工作的正确工具。
-
你能举个例子吗?
-
是的,会的。因为我在我的手机上,所以不能事先做......
标签: mysql ruby-on-rails search ruby-on-rails-4 rails-activerecord