From 624058e357bcbfc191cf0171097ecfb7aaab2011 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Mon, 29 Apr 2013 00:28:26 -0700 Subject: [PATCH] fixes #1472 --- app/models/tag_implication.rb | 5 +++-- test/unit/tag_implication_test.rb | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/models/tag_implication.rb b/app/models/tag_implication.rb index 12138dae8..f47e47084 100644 --- a/app/models/tag_implication.rb +++ b/app/models/tag_implication.rb @@ -25,7 +25,7 @@ class TagImplication < ActiveRecord::Base until children.empty? all.concat(children) - children = self.class.where(["antecedent_name IN (?)", children]).all.map(&:consequent_name) + children = TagImplication.where("antecedent_name IN (?) and status = ?", children, "active").all.map(&:consequent_name) end end.sort.uniq end @@ -40,6 +40,7 @@ class TagImplication < ActiveRecord::Base end def update_descendant_names! + clear_descendants_cache update_descendant_names update_column(:descendant_names, descendant_names) end @@ -104,9 +105,9 @@ class TagImplication < ActiveRecord::Base def process! update_column(:status, "processing") - update_descendant_names_for_parent update_posts update_column(:status, "active") + update_descendant_names_for_parent rescue Exception => e update_column(:status, "error: #{e}") end diff --git a/test/unit/tag_implication_test.rb b/test/unit/tag_implication_test.rb index a21929b9b..5c405b55f 100644 --- a/test/unit/tag_implication_test.rb +++ b/test/unit/tag_implication_test.rb @@ -15,6 +15,14 @@ class TagImplicationTest < ActiveSupport::TestCase CurrentUser.ip_addr = nil end + should "ignore pending implications when building descendant names" do + ti2 = FactoryGirl.build(:tag_implication, :antecedent_name => "b", :consequent_name => "c") + ti2.save + ti1 = FactoryGirl.create(:tag_implication, :antecedent_name => "a", :consequent_name => "b") + ti1.reload + assert_equal("b", ti1.descendant_names) + end + should "populate the creator information" do ti = FactoryGirl.create(:tag_implication, :antecedent_name => "aaa", :consequent_name => "bbb") assert_equal(CurrentUser.user.id, ti.creator_id)