2012-09-01 56 views
0
步骤序列

我试图创建一个TourSteps在Ruby和Mongoid序列:如何管理的Mongoid和红宝石

class Tour 
    include Mongoid::Document 
    field :name, type: String 
    embeds_many :steps 
end 

class Step 
    include Mongoid::Document 
    field :name, type: String 
    embedded_in :tour 
end 

什么是最好的方式来管理的步骤的有序序列?(考虑:插入,删除,走动步骤)

我的第一反应就是做一个单向链表风格,存储下一个步骤:

class Step 
    include Mongoid::Document 
    field :name, type: String 

    embeds_one :step, store_as: "next_step" 
    embedded_in :tour 
end 

兴趣,如果任何人有更好的设计建议:)

谢谢!

+1

如果您想更改步骤顺序,使用单向关系会导致难以维护。为什么不保持embeds_many +一个顺序字段? – apneadiving

+0

感谢您的及时回应@apneadiving :) –

+0

它回答你的问题吗? – apneadiving

回答

1

如果您想更改步骤顺序,使用单向关系会导致难以维护。

我推荐使用embeds_many + step order field +自定义验证器。

+0

自定义验证程序应该做什么? –

+1

我会检查所有条目有不同的顺序,因为这些是嵌入式模型,它不会花费太多 – apneadiving