Neo4j.rb returns 个模型不正确 class 用于具有多个标签的节点

Neo4j.rb returns models with incorrect class for nodes with multiple labels

我有两个 ActiveNode 模型:

class Company
  include Neo4j::ActiveNode
end

class Entity
  include Neo4j::ActiveNode
end

它们对应于标签 "Entity" 和 "Company",它们属于同一个节点。所以,一个节点,一个实体,一个公司。

在我的控制台中,当我尝试以下查询时:

Entity.where(entity_id: 1).first

它 returns 一个公司对象:

#<Company uuid: entity_id: 1> 

我不想这样。如果我要求一个实体,我希望返回一个实体。实体模型定义的方法与公司模型不同。无论如何我可以强制执行正确的行为吗?它以这种方式运行似乎非常违反直觉。

我正在使用 neo4j 3.0 和 neo4j.rb 7.0.3

这是一个很好的观点。如果两个标签都可以匹配,它应该使用用于查找的 class 标签。

不过我对你的造型很好奇。 Company 节点可以永远不是 Entity 吗?反之亦然?或者,例如,Company 总是一种 Entity?如果是这样,您可能想使用继承:

class Entity
  include Neo4j::ActiveNode
end

class Company < Entity
  # No need to include Neo4j::ActiveNode
end

但这在一定程度上是一个问题,即 Company 节点继承 Entity

的 behavior/logic 是否有意义