From e66b9687a2b78a9961f975e799bc47b8d521517c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Tue, 9 Aug 2022 13:33:45 +0200 Subject: [PATCH] Fix calculating tsvector on hidden records We introduced this bug in commit 55d339572, since we didn't take hidden records into consideration. I've tried to use `update_column` to simplify the code, but got a syntax error `unnamed portal parameter` and didn't find how to fix it. --- app/models/concerns/search_cache.rb | 2 +- spec/models/search_cache_spec.rb | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 spec/models/search_cache_spec.rb diff --git a/app/models/concerns/search_cache.rb b/app/models/concerns/search_cache.rb index ad25b07de..478f9a0e1 100644 --- a/app/models/concerns/search_cache.rb +++ b/app/models/concerns/search_cache.rb @@ -6,7 +6,7 @@ module SearchCache end def calculate_tsvector - self.class.where(id: id).update_all("tsv = (#{searchable_values_sql})") + self.class.with_hidden.where(id: id).update_all("tsv = (#{searchable_values_sql})") end private diff --git a/spec/models/search_cache_spec.rb b/spec/models/search_cache_spec.rb new file mode 100644 index 000000000..03dc09368 --- /dev/null +++ b/spec/models/search_cache_spec.rb @@ -0,0 +1,27 @@ +require "rails_helper" + +describe SearchCache do + describe "#calculate_tsvector" do + it "calculates the tsv column of a record" do + debate = create(:debate) + debate.update_column(:tsv, nil) + + expect(debate.reload.tsv).to be_nil + + debate.calculate_tsvector + + expect(debate.reload.tsv).not_to be_nil + end + + it "calculates the tsv column of a hidden record" do + debate = create(:debate, :hidden) + debate.update_column(:tsv, nil) + + expect(debate.reload.tsv).to be_nil + + debate.calculate_tsvector + + expect(debate.reload.tsv).not_to be_nil + end + end +end