У меня есть три модели «Вход», «Механизм» и «Вывод».Автоматическое именование объектов на основе ассоциаций с другими моделями
Механизм 'has_one': вход и 'has_one': выход.
Я хочу, чтобы это сделало так, чтобы объект Механизм имел атрибут имени «Влияние ввода X на выход Y».
Вот что я пробовал:
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
Но когда я инициализировать объект в консоли, я получаю ошибку
NoMethodError: undefined method `name' for nil:NilClass from app/models/mechanism.rb:12:in 'name_mechanism'
Так что да, я использую Neo4j в качестве базы данных, но я подозревают, что это не проблема neo4j, а скорее мое слабое понимание обратных вызовов в Rails. Любой совет?
Я думаю, что факторинг Макса стоит посмотреть, но мне также интересно узнать о проблеме. Как выглядят ваши заявления о создании/сохранении? Если вы создаете, например, и указываете вход и выход в то время, то, возможно, есть аргумент о том, что после того, как все создания отношений произойдут, «after_save». Я думаю, что стоит добавить вопрос в репозиторий 'neo4j': github.com/neo4jrb/neo4j/issues/new –