J'utilise neo4j avec neo4jrb. Dans irb J'utilise cette requête:Neo4j et Rails ne me donnent pas de modèle
p = Tag.as(:t).where("t.value = 'Andre'").names(:n).pluck(:n)
Je me attends à obtenir avec p.first
un modèle de type Person. Mais comme résultat, je reçois seulement un CypherNode 3 (53012760)
. Le 3 est l'identifiant du modèle personnel. Mais je ne peux pas obtenir le modèle, qu'est-ce que je fais mal?
Voici mes modèles et relations:
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
Cela fonctionne. Très agréable. Pourriez-vous expliquer quelle est la différence ou pourquoi ma version n'a pas fonctionné comme prévu? – Andre
Je ne suis pas sûr à 100%, mais si, par exemple, votre modèle 'Tag' essaie de charger d'abord, il essayera d'accéder à la constante' Names'. Si ce n'est pas encore défini, il se peut qu'il y ait une erreur que vous n'avez pas remarquée. Si vous utilisez Rails, la fonctionnalité AutoLoad d'ActiveSupport doit prendre soin de cela, mais vous pouvez toujours rencontrer des problèmes avec des références circulaires. Je n'ai pas enquêté de très près –