【问题标题】:Gem for taxonomy / user-defined fields分类/用户定义字段的宝石
【发布时间】:2011-11-15 16:22:35
【问题描述】:

是否存在用于将用户定义字段功能添加到现有 Ruby 类的现有 gem?

我正在寻找的宝石/解决方案类型的两个示例是:

...最终,我希望允许用户通过网络应用构建自己的用户定义对象分类。

【问题讨论】:

    标签: ruby-on-rails gem custom-taxonomy


    【解决方案1】:

    我使用 ancestry 并评估了 taxis 来构建分类法。

    不过,我不确定您所说的“用户定义的字段功能”是什么意思;您是指模型上的动态属性吗?

    一个选项是简单地序列化哈希,尽管您可能需要根据用户的选择添加类型信息。

    由于您可能只有有限数量的可用类型(字符串、整数、日期等),那么您最好围绕它们创建精简模型(StringVarIntVar 等),其中包含动态“列”的值和名称并使用正常关联,例如has_many :string_vars

    【讨论】:

    • 是的,模型上的动态属性。也就是说,允许用户向对象添加属性,指定类型(整数、字符串、日期等)并将这些属性与对象本身一起存储。无需将其他属性存储为额外的列,因为以编程方式修改架构不是我的目标/愿望。
    • @normalocity 嗯。序列化哈希,但您可能必须自己添加输入。
    • 嗯 - 所以你认为只是序列化一个哈希并存储它会是一种更好的方法,这会产生一个表列,并且(如果我理解正确的话)更简单的数据库查询为结果。
    • @normalocity 我认为如果您想查询哈希值中的值,您将遇到问题。
    • @normalocity 但是不同的实例会有不同的动态值。您是否不需要将它们全部加载,添加您的动态方法(和返回值),然后使用 AREL 或其他东西?我看不出添加方法会有什么帮助。
    【解决方案2】:

    由于已经有一个公认的答案,所以这篇文章主要是为了将来参考......听起来你在寻找EAV model。例如,假设您有一个用户 - 这将是实体(称为实体类型),您有一个属性(例如一个文本字段属性或属性类型,称为“名称”),然后是您想要的值进入该文本字段以附加到用户。每个用户(实体)都应该能够有一个与之关联的属性(名称)。这可以通过 EAV 模型来实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      相关资源
      最近更新 更多