我决定使用一个节点=一个文档来建模知识图,并且一个边=一个节点中的一个嵌入文档。此图支持定向边,我决定在双向节点复制两个节点中的边。
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应该
bidirectional_edge
设置为true 我目前正在尝试推出自己的实现,但也许你有任何宝石,技巧,或者你可以比我更快更干净地解决这个问题