使用ActiveRecord在Rails中实现复杂的关系

Dug*_*ugi 6 mysql search ruby-on-rails ruby-on-rails-4 rails-activerecord

从我的另一个问题:

我需要做的是:用他们自己的指定信息字段创建多个类别(即,汽车与Pets有不同的字段),一旦创建了这样的类别,我将调用我需要的命令,每个类别的新表将做成.我知道我可以将所有字段存储为某种字符串,然后处理它以正确显示它,但我需要为我的Web应用程序提供高级搜索功能,并为每个类别创建单独的表似乎是实现它的最佳方式.我真的很想听听这个的替代方案

所以我有这种情况,我需要类别来保存该特定类别所需的所有输入字段.因此,在管理中,我将使用此表单,我可以将类别名称,一些其他相关信息添加到类别本身,然后这些字段将收集有关在制作时向用户呈现的HTML字段的信息进入这一特定类别.

例如,这将是一个狗类:

  • 分类名称:狗
  • 启用类别:1
  • 分类父母:宠物
  • 领域:
    • 标题 - 文本字段(将自动添加到每个类别)
    • 品种 - 选择领域
    • 年龄 - 数字字段
    • 颜色 - 文本字段
    • 价格 - 数字字段(将自动添加到每个类别)
    • 描述 - 文本区域字段(将自动添加到每个类别)

所以现在在这个阶段,当用户为Dog类别创建了所有这些特定字段时,我很难确定当用户点击提交按钮以保存此类别时会发生什么.我想到了这两个解决方案:

  • 为每个新类别创建一个新模型/表(上面的读取链接问题),将所有HTML字段作为列,并在categories表上存储一行,其中包含有关此类别的一些基本信息
  • 将所有内容存储在categories表中,并有一个fields_json列,用于存储所有HTML字段信息(我实际上不会存储HTML,但基本信息是字段的内容,然后在控制器中动态创建HTML表单字段)作为JSON字符串.我能够很好地呈现这些字段create,但是update填充这些字段(可能)会很麻烦,搜索功能对于这种替代方案来说效率不高.

所以我正在寻找的是第三种选择,所以我可以解决我的问题.什么是解决此问题的有效方法,并能够使用不同的输入字段的类别,并能够有效地执行这些类别的搜索?

我正在开发的项目是在Ruby on Rails 4中创建的,而数据库是在MySQL中创建的.

小智 1

对于给定的场景我会:

  1. 创建表类别来存储每个类别
  2. 创建表category_fields来存储每个类别字段
  3. 创建表collected_categories以存储序列化哈希中类别字段收集的所有数据

收集的数据可以轻松地(反)序列化到文本列中(无论您将使用哪种数据库引擎)。

检查那些利用您的问题的来源:动态表单