Rails 3 + Mongoid:让用户对记录进行排序的好方法

时间:2014-11-13 22:25:37

标签: ruby-on-rails sorting mongoid

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

澄清我的意思:让我们说RecipeIngredients个。Recipe。目前,这些食谱没有任何功能让用户(可以编辑{{1}})以他/她想要的方式对成分进行分类。

到目前为止,我主要使用数字排序顺序字段对事物进行排序,其中用户必须增加/减少记录的数量以对其进行上调或下调 - 必须有更好的方法(gem?)来执行此操作我猜,但我找不到多少。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

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

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: '...',
  ...
}

由于成分是一个数组,它们是隐式排序的,重新排序它们只是在数组中移动东西。

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

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