同步冗余的mongoid文档

时间:2015-04-27 12:33:45

标签: ruby-on-rails-4 graph mongoid data-synchronization redundancy

我决定使用一个节点=一个文档来建模知识图,并且一个边=一个节点中的一个嵌入文档。此图支持定向边,我决定在双向节点复制两个节点中的边。

class Tag
  includes Mongoid::Document
  field :name  

  embeds_many :links, class_name: 'TagLink', inverse_of: :parent_node

class TagLink
  includes Mongoid::Document
  embedded_in :parent_node, class_name: 'Tag', inverse_of: :link
  belongs_to :child_node, class_name: 'Tag'

现在,我的用户管理员可以创建新标记,并指定此标记的链接。

我的POST / PATCH请求中的参数如下所示

tag: {name: "Rails", links: [
  {child_name: "Ruby", child_node: "abhkdfjgksgdf000023d415", bidirectional_edge: true, ...}, 
  {child_name: "Server Programming", bidirectional_edge: true, ...}
]}

确保同步完成的最佳方法是什么?我不确定我真正想要的行为,但基本上以上的POST应该

  • 创建一个新标签“Rails”
  • 更新标签“Ruby”,“服务器编程”以添加指向“Ruby”的链接,因为bidirectional_edge设置为true
  • 如果链接更新出现问题,可能理想的做法是回滚任何更改并显示错误视图(如果回滚太难,那么可能只显示问题列表)

我目前正在尝试推出自己的实现,但也许你有任何宝石,技巧,或者你可以比我更快更干净地解决这个问题

0 个答案:

没有答案