我需要一种好的(这意味着简单易懂)的方式让用户在使用Rails 3和Mongoid的应用中对记录进行排序。
澄清我的意思:让我们说Recipe
有Ingredients
个。Recipe
。目前,这些食谱没有任何功能让用户(可以编辑{{1}})以他/她想要的方式对成分进行分类。
到目前为止,我主要使用数字排序顺序字段对事物进行排序,其中用户必须增加/减少记录的数量以对其进行上调或下调 - 必须有更好的方法(gem?)来执行此操作我猜,但我找不到多少。
任何帮助表示赞赏!
答案 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
字段来处理排序的不同方法。