我将neo4j与neo4jrb一起使用。在irb中,我使用这个查询:
p = Tag.as(:t).where("t.value = 'Andre'").names(:n).pluck(:n)
我希望用p.first
得到一个Person类型的模型。但结果我只得到了一个CypherNode 3 (53012760)
。3是personmodel中的ID。但是我拿不到模型,我做错了什么?
这里是我的模型和关系:
class Tag
include Neo4j::ActiveNode
property :value, index: :exact, constraint: :unique
... more outs ....
has_many :out, :names, rel_class: Names
end
class Names
include Neo4j::ActiveRel
from_class Tag
to_class Person
type 'name'
end
class Person
include Neo4j::ActiveNode
has_many :in, :named, rel_class: Names
end
当我在本地尝试它时(neo4j
gem 6.0.1版本),它是有效的,尽管做了一些更改,这样当我将它粘贴到irb时就不会失败。具体来说,我向rel_class
、from_class
和to_class
传递了符号而不是类,这样就不会出现加载顺序问题:
class Tag
include Neo4j::ActiveNode
property :value, index: :exact, constraint: :unique
has_many :out, :names, rel_class: :Names
end
class Names
include Neo4j::ActiveRel
from_class :Tag
to_class :Person
type 'name'
end
class Person
include Neo4j::ActiveNode
has_many :in, :named, rel_class: :Names
end
如果这没有帮助,您可以尝试从模型中删除其他代码,看看是否有其他原因导致了问题。
此外,您的型号都在app/models
下,并且命名正确吗?