Sha256: eb347d6764e80dcaeb42f173f51a0bfa82aac037a5b2fb480feb1b2896147331

Contents?: true

Size: 916 Bytes

Versions: 10

Compression:

Stored size: 916 Bytes

Contents

module ActsAsTaggableOn
  class Tagging < ::ActiveRecord::Base #:nodoc:
    attr_accessible :tag,
                    :tag_id,
                    :context,
                    :taggable,
                    :taggable_type,
                    :taggable_id,
                    :tagger,
                    :tagger_type,
                    :tagger_id

    belongs_to :tag, :class_name => 'ActsAsTaggableOn::Tag'
    belongs_to :taggable, :polymorphic => true
    belongs_to :tagger,   :polymorphic => true

    validates_presence_of :context
    validates_presence_of :tag_id

    validates_uniqueness_of :tag_id, :scope => [ :taggable_type, :taggable_id, :context, :tagger_id, :tagger_type ]

    after_destroy :remove_unused_tags

    private

    def remove_unused_tags
      if ActsAsTaggableOn.remove_unused_tags
        if tag.taggings.count.zero?
          tag.destroy
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
acts-as-taggable-on-2.4.0 lib/acts_as_taggable_on/tagging.rb
acts-as-taggable-on-2.4.0.beta lib/acts_as_taggable_on/tagging.rb
crowdint_acts-as-taggable-on-2.3.5 lib/acts_as_taggable_on/tagging.rb
acts-as-taggable-on-2.3.3 lib/acts_as_taggable_on/tagging.rb
acts-as-taggable-on-2.3.2 lib/acts_as_taggable_on/tagging.rb
crowdint_acts-as-taggable-on-2.3.4 lib/acts_as_taggable_on/tagging.rb
crowdint_acts-as-taggable-on-2.3.3 lib/acts_as_taggable_on/tagging.rb
crowdint_acts-as-taggable-on-2.3.2 lib/acts_as_taggable_on/tagging.rb
acts-as-taggable-on-2.3.1 lib/acts_as_taggable_on/tagging.rb
acts-as-taggable-on-2.3.0 lib/acts_as_taggable_on/tagging.rb