#ruby-on-rails #ruby-on-rails-3 #mongodb #mongoid
#ruby-on-rails #ruby-on-rails-3 #mongodb #mongoid
Вопрос:
В моем приложении rails есть древовидная модель, подобная этой:
class File
belongs_to :parent, :foreign_key => "parent_id", :class_name => "File"
end
Я хочу добавить функциональность к поведению родительского установщика. Итак, что-то вроде этого (за исключением того, что это не работает)?
def parent=(new_parent)
super(new_parent)
# Additional stuff I want to do here
end
Мне нужно, чтобы поведение по умолчанию все еще существовало, поскольку я думаю, что оно управляет отношениями, но мне нужно знать, когда родительский элемент изменен, чтобы я мог выполнить некоторые дополнительные задачи.
Ответ №1:
В настоящее время у меня есть обходной путь:
class File
belongs_to :parent, :foreign_key => "parent_id", :class_name => "File"
before_save :check_parent
def check_parent
if self.parent_id_changed?
# Additional stuff I want to do here
end end end
Единственным недостатком является то, что вам нужно сохранить, чтобы это сработало. В идеале я бы хотел, чтобы он включился, как только будет изменен parent_id. В противном случае это работает просто отлично, хотя я был бы открыт для лучшего решения.