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

Methods

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 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 54
54:         def add_association_dependencies(hash)
55:           hash.each do |association, action|
56:             raise(Error, "Nonexistent association: #{association}") unless r = association_reflection(association)
57:             type = r[:type]
58:             raise(Error, "Invalid dependence action type: association: #{association}, dependence action: #{action}") unless DEPENDENCE_ACTIONS.include?(action)
59:             raise(Error, "Invalid association type: association: #{association}, type: #{type}") unless time = ASSOCIATION_MAPPING[type]
60:             association_dependencies["#{time}_#{action}""#{time}_#{action}"] << if action == :nullify
61:               case type
62:               when :one_to_many , :many_to_many
63:                 proc{public_send(r[:remove_all_method])}
64:               when :one_to_one
65:                 proc{public_send(r[:setter_method], nil)}
66:               else
67:                 raise(Error, "Can't nullify many_to_one associated objects: association: #{association}")
68:               end
69:             else
70:               raise(Error, "Can only nullify many_to_many associations: association: #{association}") if type == :many_to_many
71:               r[:dataset_method]
72:             end
73:           end
74:         end

Freeze association dependencies when freezing model class.

[Source]

    # File lib/sequel/plugins/association_dependencies.rb, line 77
77:         def freeze
78:           @association_dependencies.freeze.each_value(&:freeze)
79: 
80:           super
81:         end

[Validate]