From 20c19d473230ad2e8667cb7b72d24a2b9e1c83f8 Mon Sep 17 00:00:00 2001 From: Anatoli Makarevich Date: Wed, 11 Dec 2013 03:33:22 +0400 Subject: [PATCH] Move loading tags for saving to method --- lib/acts_as_taggable_on/acts_as_taggable_on/core.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/acts_as_taggable_on/acts_as_taggable_on/core.rb b/lib/acts_as_taggable_on/acts_as_taggable_on/core.rb index 500754cea..1d32b375c 100644 --- a/lib/acts_as_taggable_on/acts_as_taggable_on/core.rb +++ b/lib/acts_as_taggable_on/acts_as_taggable_on/core.rb @@ -329,6 +329,12 @@ def reload(*args) super(*args) end + ## + # Find existing tags or create non-existing tags + def load_tags(tag_list) + ActsAsTaggableOn::Tag.find_or_create_all_with_like_by_name(tag_list) + end + def save_tags tagging_contexts.each do |context| next unless tag_list_cache_set_on(context) @@ -336,7 +342,7 @@ def save_tags tag_list = tag_list_cache_on(context).uniq # Find existing tags or create non-existing tags: - tags = ActsAsTaggableOn::Tag.find_or_create_all_with_like_by_name(tag_list) + tags = load_tags(tag_list) # Tag objects for currently assigned tags current_tags = tags_on(context) @@ -355,7 +361,7 @@ def save_tags new_tags |= current_tags[index...current_tags.size] & shared_tags # Order the array of tag objects to match the tag list - new_tags = tags.map do |t| + new_tags = tags.map do |t| new_tags.find { |n| n.name.downcase == t.name.downcase } end.compact end