Sha256: b30b5a15d918a68fdd66a349c8575f4f9c40ba55d7e0af28104ded2fc090e2f8

Contents?: true

Size: 826 Bytes

Versions: 1

Compression:

Stored size: 826 Bytes

Contents

class Tag < ActiveRecord::Base
  class << self
    def find_or_initialize_with_name_like_and_kind(name, kind)
      with_name_like_and_kind(name, kind).first || new(:name => name, :kind => kind)
    end
  end

  has_many :taggings, :dependent => :destroy

  validates_presence_of :name
  validates_uniqueness_of :name, :scope => :kind

  if Tag.respond_to? :scope
    scope :with_name_like_and_kind, lambda {|name, kind|
      where(:name => name.to_s.downcase, :kind => kind.to_s.singularize)
    }
    scope :of_kind, lambda {|kind| where(:kind => kind.to_s.singularize) }
  else
    named_scope :with_name_like_and_kind, lambda {|name, kind|
      { :conditions => {:name => name.to_s.downcase, :kind => kind.to_s.singularize} }
    }
    named_scope :of_kind, lambda {|kind| { :conditions => {:kind => kind} } }
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
is_taggable_rails3-0.3.0 lib/tag.rb