使用ActiveRecord实现的Rails

问题描述:

复杂的关系从我的another question使用ActiveRecord实现的Rails

我需要做到这一点是:他们 自己指定的信息字段创建多个类别(即汽车具有 宠物不同的领域。 ),一旦创建了这样的类别,我需要的命令是 ,并为每个类别创建一个新表格。我知道我可以 作为某种字符串存储所有领域,然后处理它,以正确显示 它,但我需要我的网络应用程序的高级搜索功能和 为每个类别创建单独的表似乎是最好的方式 实现它。我真的希望听到这个替代品

所以我有这种情况下,我需要类别来保存该特定类别所需的所有输入字段。因此,在管理部门中,我可以使用这种形式在其中添加类别名称,一些其他相关信息到类别本身,然后这些字段收集关于向用户呈现给用户的什么HTML字段的信息进入这个特定的类别。

例如,这将是一个狗类:

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

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

  • 为每个新类别的新模式/表(读取链接的问题上)与所有的HTML字段为列,还可以存储在categories表中的行有关的一些基本信息这个类别
  • 将所有内容存储在categories表中,并有一个fields_json列,它将存储所有的HTML字段信息(我不会实际存储HTML,但基本信息的字段是什么,然后在控制器中动态创建HTML表单域)作为JSON字符串。我将能够在create上很好地显示这些字段,但是在update上填充这些字段(可能)会很麻烦,并且搜索功能对于此替代方式效率不高。

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

我正在处理的项目是在Ruby on Rails 4中创建的,数据库在MySQL中。

+0

你可以切换到Postgres吗?它有一个JSON类型,可以用来高效地查询动态属性。 Rails会正确处理这种类型,所以你只需要使用散列。 – 2014-12-10 22:43:04

+0

我以前从未使用过Postgres,所以我对使用它没有信心。 – Aborted 2014-12-10 22:44:15

+0

它的基本功能与mysql不是很不一样。 Imho这将是该工作的正确工具。 – 2014-12-11 05:06:30

对于给定的情况下我会:

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

收集的数据可以很容易地(反)序列化到文本列中(不管您将使用哪种数据库引擎)。

检查那些利用你的问题的来源:dynamic forms