Add translations to debate pg_search_scope
Some Debate attributes are now translatable so we need to include all existing translations on pg_search scope.
This commit is contained in:
committed by
voodoorai2000
parent
6a6080e6b7
commit
036a3d7636
@@ -65,13 +65,17 @@ class Debate < ApplicationRecord
|
|||||||
.where("author_id != ?", user.id)
|
.where("author_id != ?", user.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def searchable_values
|
def searchable_translations_definitions
|
||||||
{ title => "A",
|
{ title => "A",
|
||||||
|
description => "D" }
|
||||||
|
end
|
||||||
|
|
||||||
|
def searchable_values
|
||||||
|
{
|
||||||
author.username => "B",
|
author.username => "B",
|
||||||
tag_list.join(" ") => "B",
|
tag_list.join(" ") => "B",
|
||||||
geozone.try(:name) => "B",
|
geozone.try(:name) => "B",
|
||||||
description => "D"
|
}.merge!(searchable_globalized_values)
|
||||||
}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.search(terms)
|
def self.search(terms)
|
||||||
@@ -161,4 +165,16 @@ class Debate < ApplicationRecord
|
|||||||
orders << "recommendations" if Setting["feature.user.recommendations_on_debates"] && user&.recommended_debates
|
orders << "recommendations" if Setting["feature.user.recommendations_on_debates"] && user&.recommended_debates
|
||||||
return orders
|
return orders
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def searchable_globalized_values
|
||||||
|
values = {}
|
||||||
|
translations.each do |translation|
|
||||||
|
Globalize.with_locale(translation.locale) do
|
||||||
|
values.merge! searchable_translations_definitions
|
||||||
|
end
|
||||||
|
end
|
||||||
|
values
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -465,18 +465,35 @@ describe Debate do
|
|||||||
|
|
||||||
context "attributes" do
|
context "attributes" do
|
||||||
|
|
||||||
|
let(:attributes) { { title: "save the world",
|
||||||
|
description: "in order to save the world one must think about...",
|
||||||
|
title_es: "para salvar el mundo uno debe pensar en...",
|
||||||
|
description_es: "uno debe pensar" } }
|
||||||
|
|
||||||
it "searches by title" do
|
it "searches by title" do
|
||||||
debate = create(:debate, title: "save the world")
|
debate = create(:debate, attributes)
|
||||||
results = described_class.search("save the world")
|
results = described_class.search("save the world")
|
||||||
expect(results).to eq([debate])
|
expect(results).to eq([debate])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "searches by title across all languages translations" do
|
||||||
|
debate = create(:debate, attributes)
|
||||||
|
results = described_class.search("salvar el mundo")
|
||||||
|
expect(results).to eq([debate])
|
||||||
|
end
|
||||||
|
|
||||||
it "searches by description" do
|
it "searches by description" do
|
||||||
debate = create(:debate, description: "in order to save the world one must think about...")
|
debate = create(:debate, attributes)
|
||||||
results = described_class.search("one must think")
|
results = described_class.search("one must think")
|
||||||
expect(results).to eq([debate])
|
expect(results).to eq([debate])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "searches by description across all languages translations" do
|
||||||
|
debate = create(:debate, attributes)
|
||||||
|
results = described_class.search("uno debe pensar")
|
||||||
|
expect(results).to eq([debate])
|
||||||
|
end
|
||||||
|
|
||||||
it "searches by author name" do
|
it "searches by author name" do
|
||||||
author = create(:user, username: "Danny Trejo")
|
author = create(:user, username: "Danny Trejo")
|
||||||
debate = create(:debate, author: author)
|
debate = create(:debate, author: author)
|
||||||
|
|||||||
Reference in New Issue
Block a user