允许用户创建项目符号列表,更复杂的数据对象

时间:2013-12-19 05:08:54

标签: ruby-on-rails

在招聘申请中,我有一个模型'工作'

管理员可以创建新的工作。

作为工作描述的一部分,它将有大约4-5个要点总结它。

它还将具有作业中的所有角色及其描述。

这些仅用于显示目的,而不是用于过滤等。

这是我遇到的问题,您如何让用户创建这些项目符号列表和角色?

我可以在像

这样的rails中创建数据
bullet_list_1:string
bullet_list_2:string
role_1_title:string
role_1_dsc:string
etc...

然而,如果我这样做,那么在特定的工作上可能会有更多的要点,而在其他工作上则更少的要点。

你会如何处理这种情况?

我在想一个has_many关系可能会这样做,但如果有一个更好的解决方案,那就完全可以了!

1 个答案:

答案 0 :(得分:1)

我根据您的问题得出的功能结论:

  1. 必须灵活允许任意数量的项目符号以及其他字段。
  2. 必须允许轻松创建和显示(如您所述),以及编辑 - 显示与创作相同。
  3. 技术候选人:

    1. ActiveRecord关系(has_many)

      这会被过滤掉。没有办法应用它,因为字段不确定。

    2. Markdown文本解析

      这将满足基本需求。您还可以显示每个字段的创建表单,并在保存时将它们组合为标记。但是,对于编辑,编辑原始markdown更容易,而不是将其转换回形式,如创建。此外,当您想要自定义视图输出时,例如显示其中的一部分,它的灵活性会降低。

    3. 文档数据库,如MongoDB

      这将是一个完美的契合。所有项目符号和其他信息都可以保存在键/值对中。

    4. 文档上的ActiveRecord替代

      如果您使用的是PostgreSQL,则可以考虑hstore(对于一个级别的键/值)或json(对于嵌套的级别键/值)数据字段。如果不是PostgreSQL,您可以使用文本字段并将其序列化为Hash或JSON,但性能较低。

    5. 结论:

      如果“Job”模型是核心业务,我会考虑MongoDB。如果有任何其他限制,我会考虑PostgreSQL hstore或JSON,最后是序列化的文本字段。

相关问题