Sha256: cf16a6f7967f632f78bd9056cb072e6aea11b1a3785aff938f3a0f7ab1b6fa1b
Contents?: true
Size: 1.51 KB
Versions: 42
Compression:
Stored size: 1.51 KB
Contents
module ActiveGraph module Node module Dependent module AssociationMethods def validate_dependent(value) fail ArgumentError, "Invalid dependent value: #{value.inspect}" if not valid_dependent_value?(value) end def add_destroy_callbacks(model) return if dependent.nil? model.before_destroy(&method("dependent_#{dependent}_callback")) rescue NameError raise "Unknown dependent option #{dependent}" end private def valid_dependent_value?(value) return true if value.nil? self.respond_to?("dependent_#{value}_callback", true) end # Callback methods def dependent_delete_callback(object) object.association_query_proxy(name).delete_all end def dependent_delete_orphans_callback(object) unique_query = object.as(:self).unique_nodes(self, :self, :n, :other_rel) unique_query.query.optional_match('(n)-[r]-()').delete(:n, :r).exec if unique_query end def dependent_destroy_callback(object) unique_query = object.association_query_proxy(name) unique_query.each_for_destruction(object, &:destroy) if unique_query end def dependent_destroy_orphans_callback(object) unique_query = object.as(:self).unique_nodes(self, :self, :n, :other_rel) unique_query.each_for_destruction(object, &:destroy) if unique_query end # End callback methods end end end end
Version data entries
42 entries across 42 versions & 1 rubygems