【问题标题】:Rails 3 + Mongoid: A good way to let users sort recordsRails 3 + Mongoid:让用户对记录进行排序的好方法
【发布时间】:2014-11-13 22:25:37
【问题描述】:

我需要一种好的(这意味着简单易懂)的方式来让用户在使用 Rails 3 和 Mongoid 的应用程序中对记录进行排序。

为了澄清我的意思:假设有一个Recipe 有多个Ingredients。目前,这些食谱没有让用户(可以编辑Recipe)以他/她想要的方式对成分进行分类的功能。

到目前为止,我主要使用数字排序顺序字段对内容进行排序,用户必须增加/减少记录的数量才能对其进行排序 - 必须有更好的方法(宝石?)来做到这一点我猜,但我没有找到太多。

任何帮助表示赞赏!

【问题讨论】:

    标签: ruby-on-rails sorting mongoid


    【解决方案1】:

    如果您的 Recipe 示例与您正在执行的操作接近,那么您应该为您的 Ingredients 使用嵌入式文档。如果你有这样的事情:

    class Recipe
      include Mongoid::Document
      embeds_many :ingredients
      # Recipe name, ... fields.
    end
    class Ingredient
      include Mongoid::Document
      embedded_in :recipe
      # Ingredient name, amount, ... fields.
    end
    

    那么成分实际上是配方中的哈希数组,而配方在 MongoDB 中将如下所示:

    {
      ingredients: [
        { ingredient... },
        ...
      ],
      name: '...',
      ...
    }
    

    由于成分是一个数组,它们是隐式排序的,并且重新排序它们只是在数组中移动事物的简单问题。

    如果“成分”需要单独成为单独的顶级实体,则嵌入的成分将以通常的方式引用顶级成分。如果“成分”实际上只是 ids 的列表,则使用 Array 字段来存储它们并使用数组元素的顺序来定义成分顺序。

    您可能会注意到,以上所有只是使用Array 字段来处理排序的不同方式。

    【讨论】:

    • 谢谢,我过去也使用数组进行排序。只是在想可能有更好的方法来实现这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 2021-11-24
    • 1970-01-01
    相关资源
    最近更新 更多