Module: RocketTag::Taggable::InstanceMethods

Defined in:
lib/rocket_tag/taggable.rb,
lib/rocket_tag/taggable.rb

Instance Method Summary collapse

Instance Method Details

#cache_tagsObject



64
65
66
67
68
69
70
71
72
# File 'lib/rocket_tag/taggable.rb', line 64

def cache_tags
  unless @tags_cached
    tags_by_context ||= send("taggings").group_by{|f| f.context }
    tags_by_context.each do |context,v|
      write_context context, v.map{|t| t.tag.name}
    end
    @tags_cached = true
  end
end

#read_context(context) ⇒ Object



79
80
81
82
# File 'lib/rocket_tag/taggable.rb', line 79

def read_context context
  @contexts ||= {}
  @contexts[context.to_sym] || []
end

#reloadObject



55
56
57
58
59
60
61
62
# File 'lib/rocket_tag/taggable.rb', line 55

def reload
  super
  self.class.rocket_tag.contexts.each do |context|
    write_context context, []
  end
  @tags_cached = false
  cache_tags
end

#tagged_similar(options = {}) ⇒ Object

Raises:

  • (Exception)


86
87
88
89
90
91
92
93
94
95
96
# File 'lib/rocket_tag/taggable.rb', line 86

def tagged_similar options = {}
  context = options.delete :on
  raise Exception.new("#{context} is not a valid tag context for #{self.class}") unless self.class.rocket_tag.contexts.include? context
  if context
    contexts = [context]
  else
    contexts = self.class.rocket_tag.contexts
  end
  tags = send context.to_sym
  self.class.tagged_with(tags, options).where{id != my{id}}
end

#write_context(context, list) ⇒ Object



74
75
76
77
# File 'lib/rocket_tag/taggable.rb', line 74

def write_context context, list
  @contexts ||= {}
  @contexts[context.to_sym] = list
end