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 是否有意义
我有两个 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