2014-11-13 1 views
-1

레일즈 3과 몽고이 (Mongoid)를 사용하는 앱에서 레코드를 정렬 할 수있는 좋은 (쉬운 의미로) 방법이 필요합니다.Rails 3 + Mongoid : 사용자가 레코드를 정렬 할 수있는 좋은 방법

내 뜻을 명확히하기 : IngredientsRecipe이 있다고 가정 해 봅시다. 현재이 조리법에는 사용자가 원하는 방식으로 재료를 분류 할 수있는 기능이 없습니다 (Recipe을 편집 할 수 있음).

지금까지 주로 사용자가 숫자를 늘리거나 줄여서 숫자를 정렬하거나 정렬해야하는 숫자 정렬 순서 필드로 정렬했습니다. 더 좋은 방법이 있어야합니다 (보석?). 이것은 내가 추측하지만 나는 많이 찾지 못했다.

도움을 주셨습니다.

답변

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 필드를 사용하여 주문을 처리하는 방법이 위의 모든 것일 수도 있습니다.

+0

감사합니다. 이미 과거에 정렬을 수행하기 위해 배열을 사용했습니다. 이 작업을 수행하는 더 좋은 방법이 있을지도 모른다고 생각했습니다. –