Sha256: 270d438f56e7b290cec0732f368b076fedf4c6363b166401ad6e6bf44243c4b7

Contents?: true

Size: 1022 Bytes

Versions: 1

Compression:

Stored size: 1022 Bytes

Contents

module ActsAsTaggableOn
  module Taggable
    def taggable?
      false
    end

    def acts_as_taggable
      acts_as_taggable_on :tags
    end

    def acts_as_taggable_on(*tag_types)
      tag_types = tag_types.to_a.flatten.compact.map(&:to_sym)

      if taggable?
        write_inheritable_attribute(:tag_types, (self.tag_types + tag_types).uniq)
      else
        if ::ActiveRecord::VERSION::MAJOR < 3
          include ActsAsTaggableOn::ActiveRecord::Backports
        end
      
        write_inheritable_attribute(:tag_types, tag_types)
        class_inheritable_reader(:tag_types)
        
        class_eval do
          has_many :taggings, :as => :taggable, :dependent => :destroy, :include => :tag
          has_many :base_tags, :class_name => "Tag", :through => :taggings, :source => :tag

          def self.taggable?
            true
          end
        end
      end
      
      include Core
      include Aggregate
      include Cache
      include Ownership
      include Related
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
acts-as-taggable-on-2.0.0.pre3 lib/acts_as_taggable_on/acts_as_taggable_on.rb