J'ai trois modèles "Entrée", "Mécanisme" et "Sortie".Désignation automatique des objets basée sur des associations avec d'autres modèles
Mécanisme 'has_one': entrée et 'has_one': sortie. Je veux qu'il fasse en sorte qu'un objet Mécanisme ait l'attribut de nom "L'effet de l'entrée X sur la sortie Y".
Voici ce que j'ai essayé:
class Mechanism
include Neo4j::ActiveNode
property :name, default: 'NewMechanism#{self.class.count}'
has_one :in, :input, class_name: 'Input'
has_one :out, :output, class_name: 'Output'
after_create :name_mechanism
def name_mechanism
self.update_attributes(name: "Effect of #{self.input.name} on #{self.output.name}")
end
end
Mais quand j'initialise un objet dans la console, je reçois l'erreur
NoMethodError: undefined method `name' for nil:NilClass from app/models/mechanism.rb:12:in 'name_mechanism'
Alors oui j'utilise Neo4j comme base de données, mais je Je soupçonne que ce n'est pas un problème néo4j, mais plutôt ma faible compréhension des rappels dans Rails. Aucun conseil?
Je pense que l'affacturage de Max vaut le coup d'oeil, mais je suis également curieux de connaître le problème sous-jacent. À quoi ressemblent vos instructions de création/sauvegarde? Si vous créez, par exemple, et spécifiez l'entrée et la sortie à ce moment-là, alors il y a peut-être un argument pour que 'after_save' arrive après toutes les créations de relations. Je pense qu'il pourrait être utile d'ajouter un problème au repo 'neo4j': github.com/neo4jrb/neo4j/issues/new –