未定义的方法`rels`用于#<neo4j :: core :: node:xxxxxxxx>

时间:2017-05-08 18:32:30

标签: ruby-on-rails neo4j neo4j.rb

最近我升级到Neo4j 3.1.3,Neo4j.rb 8.0.13和Neo4j-core 7.1.2。从那时起,rels方法抛出undefined method 'rels' for #<Neo4j::Core::Node:xxxxxxxx>错误。

我的查询是, student.rels(dir: :outgoing, type: :enrolled_in).count

rels方法一起,create_rel方法也不起作用。我一直在阅读文档,看看这两种方法是否已经从新版本中弃用,但到目前为止还没有运气。

1 个答案:

答案 0 :(得分:1)

在阅读本答复的其余部分之前,您可能需要阅读upgrade guide

rels关系未添加到替换旧API中的旧Neo4j::Core::Node对象的Node对象中。我相信我们在rels中也有ActiveNode方法。

如果您使用ActiveNode,则替换是定义关联。类似的东西:

class Student
  include Neo4j::ActiveNode

  has_many :out, :all_nodes, type: :enrolled_in, model_class: false
end

# Then you can do:
student.all_nodes.count

但是,您只关注enrolled_in关系这一事实让我觉得这可能会转到特定节点(也许是Course?)。如果是这样我建议做:

class Course
  include Neo4j::ActiveNode
end

class
  include Neo4j::ActiveNode
  has_many :out, :courses, type: :enrolled_in 
  # model_class of `Course` will be assumed based on the association's name
end

如果您没有直接使用ActiveNode而是使用neo4j-core gem,则应使用Cypher查询