Module: Sequel::Plugins::AssociationDependencies::ClassMethods

Module | Sequel::Plugins::AssociationDependencies::ClassMethods
In: | lib/sequel/plugins/association_dependencies.rb

### Methods

add_association_dependencies inherited

### Attributes

association_dependencies | [R] | A hash specifying the association dependencies for each model. The keys are symbols indicating the type of action and when it should be executed (e.g. :before_delete). Values are an array of method symbols. For before_nullify, the symbols are remove_all_association methods. For other types, the symbols are association_dataset methods, on which delete or destroy is called.

### Public Instance methods

add_association_dependencies(hash)

Add association dependencies to this model. The hash should have association name symbol keys and dependency action symbol values (e.g. :albums=>:destroy).

[Source]

        # File lib/sequel/plugins/association_dependencies.rb, line 52
    52:         def add_association_dependencies(hash)
    53:           hash.each do |association, action|
    54:             raise(Error, "Nonexistent association: #{association}") unless r = association_reflection(association)
    55:             raise(Error, "Invalid dependence action type: association: #{association}, dependence action: #{action}") unless DEPENDENCE_ACTIONS.include?(action)
    56:             raise(Error, "Invalid association type: association: #{association}, type: #{r[:type]}") unless time = ASSOCIATION_MAPPING[r[:type]]
    57:             association_dependencies["#{time}_#{action}""#{time}_#{action}"] << if action == :nullify
    58:               raise(Error, "Can't nullify many_to_one associated objects: association: #{association}") if r[:type] == :many_to_one
    59:               r.remove_all_method
    60:             else
    61:               raise(Error, "Can only nullify many_to_many associations: association: #{association}") if r[:type] == :many_to_many
    62:               r.dataset_method
    63:             end
    64:           end
    65:         end

inherited(subclass)

Copy the current model object‘s association_dependencies into the subclass.

[Source]

        # File lib/sequel/plugins/association_dependencies.rb, line 68
    68:         def inherited(subclass)
    69:           super
    70:           ad = association_dependencies.dup
    71:           ad.keys.each{|k| ad[k] = ad[k].dup}
    72:           subclass.instance_variable_set(:@association_dependencies, ad)
    73:         end

[Validate]