Sha256: 223e5b67ed8377ebef4be6263dec506b9c0d4f121b15cf30c978f3263a9ba513

Contents?: true

Size: 1.44 KB

Versions: 154

Compression:

Stored size: 1.44 KB

Contents

module Neo4j
  module ActiveNode
    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)
          object.as(:self).unique_nodes(self, :self, :n, :other_rel).query.delete(:n, :other_rel).exec
        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

154 entries across 154 versions & 2 rubygems

Version Path
neo4j-9.0.6 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-9.0.5 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-8.3.4 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-9.0.4 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-8.3.3 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-9.0.3 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-8.3.2 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-9.0.2 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-8.3.1 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-9.0.1 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-9.0.0 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-8.3.0 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-8.2.5 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-8.2.4 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-8.2.3 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-8.2.2 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-8.2.1 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-8.1.5 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-8.1.4 lib/neo4j/active_node/dependent/association_methods.rb
neo4j-8.1.3 lib/neo4j/active_node/dependent/association_methods.rb