Sha256: 4d857ef6e91644568f9ee4d8f28f327d0eb490cba65d4e6fd9ea0b5eab8ce18b

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

class Skyline::Tag < ActiveRecord::Base
  self.table_name = "skyline_tags"
  
  cattr_accessor :taggable_models

  before_validation :sanitize_tag  
  
  class << self
    def taggable_content_models
      # lazy load all models in /app/models (not recursive) to find all Content models
      Dir.chdir(File.join(Rails.root, "app", "models")) do 
        Dir.glob("*.rb").map{|f| f.sub(".rb","").camelcase.constantize}
      end

      (taggable_models || []).delete_if{|m| m.parents.include?(Skyline) } 
    end
    
    def register_taggable_model(klass)
      self.taggable_models ||= []
      self.taggable_models.delete_if{|c| c.to_s == klass.to_s } # Hack to remove stale object
      self.taggable_models << klass      
    end
    
    def delete_unused_tags
      self.connection.execute("DELETE FROM #{self.table_name} WHERE id NOT IN (SELECT DISTINCT tag_id FROM #{Skyline::AssociatedTag.table_name})")
    end
  end
  
  protected
  
  def sanitize_tag
    self.tag = self.tag.to_s.strip.downcase if self.tag
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
skylinecms-3.3.0 app/models/skyline/tag.rb