【问题标题】:How to manage sequence of steps in Mongoid and Ruby如何管理 Mongoid 和 Ruby 中的步骤顺序
【发布时间】:2012-09-01 06:02:46
【问题描述】:

我正在尝试在 Ruby 和 Mongoid 中创建一个带有 Steps 序列的 Tour

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

如果其他人有更好的设计建议有兴趣:)

谢谢!

【问题讨论】:

  • 如果您想更改步骤顺序,使用单向关系将导致难以维护。为什么不保留 embeds_many + 一个 step order 字段?
  • 感谢您的及时回复@apneadiving :)
  • 它回答了你的问题吗?
  • 它有帮助 :) 我通常会再等几天,然后再将其标记为答案
  • @apneadiving 很高兴将此作为答案投票,只需在下方添加即可

标签: ruby database-design nosql mongoid


【解决方案1】:

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

我建议使用 embeds_many + 步进订单字段 + 自定义验证器。

【讨论】:

  • 自定义验证器应该做什么?
  • 我会检查所有条目有不同的顺序,因为这些是嵌入式模型,它不会花费太多
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-18
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-26
相关资源
最近更新 更多