Sha256: ecfb0a6f8e43a51585d0edb706614c825b2001439defdd07200bea64756bb99d

Contents?: true

Size: 825 Bytes

Versions: 22

Compression:

Stored size: 825 Bytes

Contents

module ActiveFedora::Associations::Builder
  class HasAndBelongsToMany < CollectionAssociation #:nodoc:
    self.macro = :has_and_belongs_to_many

    self.valid_options += [:inverse_of, :solr_page_size]

    def build
      reflection = super
      redefine_destroy
      reflection
    end

    private

      def redefine_destroy
        # Don't use a before_destroy callback since users' before_destroy
        # callbacks will be executed after the association is wiped out.
        name = self.name
        model.send(:include, Module.new {
          class_eval <<-RUBY, __FILE__, __LINE__ + 1
            def destroy          # def destroy
              super              #   super
              #{name}.clear      #   posts.clear
            end                  # end
          RUBY
        })
      end

  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
active-fedora-8.7.0 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-8.6.0 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-8.5.0 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-8.4.2 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-8.4.1 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-7.3.1 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-7.3.0 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-8.4.0 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-8.3.0 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-8.2.2 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-8.2.1 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-8.2.0 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-7.2.0 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-8.1.0 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-8.0.1 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-8.0.0 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-8.0.0.rc3 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-8.0.0.rc2 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-8.0.0.rc1 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb
active-fedora-7.1.2 lib/active_fedora/associations/builder/has_and_belongs_to_many.rb