2017-05-08 1 views
1

Récemment, j'ai mis à niveau vers Neo4j 3.1.3, Neo4j.rb 8.0.13, et Neo4j-core 7.1.2. Depuis lors, la méthode rels renvoie l'erreur undefined method 'rels' for #<Neo4j::Core::Node:xxxxxxxx>.méthode non définie `rels` pour # <Neo4j :: Core :: Node: xxxxxxxx>

Ma requête est, student.rels(dir: :outgoing, type: :enrolled_in).count

Avec méthode rels, méthode create_rel ne fonctionne pas aussi bien. J'ai lu les docs pour voir si ces deux méthodes ont été dépréciées à partir de versions plus récentes, mais pas de chance jusqu'à présent.

+0

ai pas vérifié, mais essayer 'relationships' place , d'autres parties de Neo4j ont également fait ce mouvement, peut-être que cela aussi. – InverseFalcon

+0

maintenant l'erreur a changé pour: 'relations 'méthodes non définies' pour # <étudiant: xxxxxxxxxxx>' –

Répondre

1

Vous voudrez peut-être lire le upgrade guide avant de lire le reste de cette réponse.

La relation rels n'a pas été ajoutée aux objets Neo4j::Core::Node qui ont remplacé les anciens objets Node dans l'ancienne API. Je crois que nous avions également une méthode rels en ActiveNode. Si vous utilisez ActiveNode, le remplacement consiste à définir une association. Quelque chose comme:

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 

Cependant, le fait que vous êtes seulement après la relation enrolled_in me fait penser que cela pourrait aller à des nœuds spécifiques (peut-être Course?). Si oui, je vous suggère de faire:

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 

Si vous n'utilisez pas ActiveNode mais plutôt directement joyau neo4j-core, vous devez utiliser une requête Cypher