Class Index [+]

Quicksearch

Sequel::Plugins::AssociationDependencies::ClassMethods

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) click to toggle source

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

    # 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:             type = r[:type]
56:             raise(Error, "Invalid dependence action type: association: #{association}, dependence action: #{action}") unless DEPENDENCE_ACTIONS.include?(action)
57:             raise(Error, "Invalid association type: association: #{association}, type: #{type}") unless time = ASSOCIATION_MAPPING[type]
58:             association_dependencies[:"#{time}_#{action}"] << if action == :nullify
59:               case type
60:               when :one_to_many , :many_to_many
61:                 proc{send(r.remove_all_method)}
62:               when :one_to_one
63:                 proc{send(r.setter_method, nil)}
64:               else
65:                 raise(Error, "Can't nullify many_to_one associated objects: association: #{association}")
66:               end
67:             else
68:               raise(Error, "Can only nullify many_to_many associations: association: #{association}") if type == :many_to_many
69:               r.dataset_method
70:             end
71:           end
72:         end
inherited(subclass) click to toggle source

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

    # File lib/sequel/plugins/association_dependencies.rb, line 75
75:         def inherited(subclass)
76:           super
77:           ad = association_dependencies.dup
78:           ad.keys.each{|k| ad[k] = ad[k].dup}
79:           subclass.instance_variable_set(:@association_dependencies, ad)
80:         end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.