Module: RocketTag::Taggable::InstanceMethods
- Defined in:
- lib/rocket_tag/taggable.rb,
lib/rocket_tag/taggable.rb
Instance Method Summary collapse
- #cache_tags ⇒ Object
- #read_context(context) ⇒ Object
- #reload ⇒ Object
- #tagged_similar(options = {}) ⇒ Object
- #write_context(context, list) ⇒ Object
Instance Method Details
#cache_tags ⇒ Object
64 65 66 67 68 69 70 71 72 |
# File 'lib/rocket_tag/taggable.rb', line 64 def unless @tags_cached ||= send("taggings").group_by{|f| f.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 |
#reload ⇒ Object
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 end |
#tagged_similar(options = {}) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/rocket_tag/taggable.rb', line 86 def tagged_similar = {} context = .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 = send context.to_sym self.class.tagged_with(, ).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 |