Module: Redmineup::ActsAsTaggable::Taggable::InstanceMethods

Defined in:
lib/redmineup/acts_as_taggable/up_acts_as_taggable.rb

Instance Method Summary collapse

Instance Method Details

#all_tags_listObject

build list from related tags



346
347
348
# File 'lib/redmineup/acts_as_taggable/up_acts_as_taggable.rb', line 346

def all_tags_list
  tags.pluck(:name)
end

#reload_with_tag_list(*args) ⇒ Object

:nodoc:



379
380
381
382
# File 'lib/redmineup/acts_as_taggable/up_acts_as_taggable.rb', line 379

def reload_with_tag_list(*args) #:nodoc:
  @tag_list = nil
  reload_without_tag_list(*args)
end

#save_cached_tag_listObject



339
340
341
342
343
# File 'lib/redmineup/acts_as_taggable/up_acts_as_taggable.rb', line 339

def save_cached_tag_list
  if self.class.caching_tag_list?
    self[self.class.cached_tag_list_column_name] = tag_list.to_s
  end
end

#save_tagsObject



350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
# File 'lib/redmineup/acts_as_taggable/up_acts_as_taggable.rb', line 350

def save_tags
  return unless @tag_list

  new_tag_names = @tag_list - tags.map(&:name)
  old_tags = tags.reject { |tag| @tag_list.include?(tag.name) }

  self.class.transaction do
    if old_tags.any?
      taggings.where("tag_id IN (?)", old_tags.map(&:id)).each(&:destroy)
      taggings.reset
    end
    new_tag_names.each do |new_tag_name|
      tags << Tag.find_or_create_with_like_by_name(new_tag_name)
    end
  end

  true
end

#tag_counts(options = {}) ⇒ Object

Calculate the tag counts for the tags used by this model.

The possible options are the same as the tag_counts class method.



372
373
374
375
376
377
# File 'lib/redmineup/acts_as_taggable/up_acts_as_taggable.rb', line 372

def tag_counts(options = {})
  return [] if tag_list.blank?

  options[:conditions] = self.class.send(:merge_conditions, options[:conditions], self.class.send(:tags_condition, tag_list))
  self.class.tag_counts(options)
end

#tag_listObject



325
326
327
328
329
330
331
332
333
# File 'lib/redmineup/acts_as_taggable/up_acts_as_taggable.rb', line 325

def tag_list
  return @tag_list if @tag_list ||= nil

  if self.class.caching_tag_list? && !(cached_value = send(self.class.cached_tag_list_column_name)).nil?
    @tag_list = TagList.from(cached_value)
  else
    @tag_list = TagList.new(*tags.map(&:name))
  end
end

#tag_list=(value) ⇒ Object



335
336
337
# File 'lib/redmineup/acts_as_taggable/up_acts_as_taggable.rb', line 335

def tag_list=(value)
  @tag_list = TagList.from(value)
end