Module: ActsAsTaggableOn::Tag

Defined in:
lib/acts_as_taggable_on_padrino/tag.rb

Defined Under Namespace

Modules: ClassMethods, InstanceMethods

Instance Method Summary collapse

Instance Method Details

#acts_as_tag(opts = {}) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/acts_as_taggable_on_padrino/tag.rb', line 3

def acts_as_tag(opts = {})
  opts.assert_valid_keys :tagging
  tagging_class_name = opts[:tagging] || 'Tagging'

  class_eval do
    attr_accessible :name

    ### ASSOCIATIONS:

    has_many :taggings, :dependent => :destroy, :class_name => tagging_class_name

    ### VALIDATIONS:
    validates_presence_of :name
    validates_uniqueness_of :name

    ### SCOPES:
    scope :named, lambda {|name| where(["name #{ActsAsTaggableOn.like_operator} ?", name]) }
    scope :named_any, lambda {|list| where(list.map { |tag| sanitize_sql(["name #{ActsAsTaggableOn.like_operator} ?", tag.to_s]) }.join(" OR ")) }
    scope :named_like, lambda {|name| where(["name #{ActsAsTaggableOn.like_operator} ?", "%#{name}%"]) }
    scope :named_like_any, lambda {|list| where(list.map { |tag| sanitize_sql(["name #{ActsAsTaggableOn.like_operator} ?", "%#{tag.to_s}%"]) }.join(" OR ")) }
  end

  include ActsAsTaggableOn::Tag::InstanceMethods
  extend ActsAsTaggableOn::Tag::ClassMethods
end