diff --git a/app/models/debate.rb b/app/models/debate.rb index 6fec7cb54..a7b84f0ce 100644 --- a/app/models/debate.rb +++ b/app/models/debate.rb @@ -116,8 +116,10 @@ class Debate < ActiveRecord::Base def self.search(terms) return none unless terms.present? - ids = where("debates.title ILIKE ? OR debates.description ILIKE ?", "%#{terms}%", "%#{terms}%").pluck(:id) | tagged_with(terms).pluck(:id) - where(id: ids) + debate_ids = where("debates.title ILIKE ? OR debates.description ILIKE ?", + "%#{terms}%", "%#{terms}%").pluck(:id) + tag_ids = tagged_with(terms, wild: true, any: true).pluck(:id) + where(id: [debate_ids, tag_ids].flatten.compact) end def conflictive? diff --git a/spec/features/debates_spec.rb b/spec/features/debates_spec.rb index 4c72ae538..5b1069a66 100644 --- a/spec/features/debates_spec.rb +++ b/spec/features/debates_spec.rb @@ -483,16 +483,18 @@ feature 'Debates' do debate3 = create(:debate) debate4 = create(:debate, description: "Schwifty in here") debate5 = create(:debate, tag_list: 'schwifty') + debate6 = create(:debate, tag_list: ['awesome foreign schwifty', 'major']) visit debates_path fill_in "search", with: "Schwifty" click_button "Search" within("#debates") do - expect(page).to have_css('.debate', count: 3) + expect(page).to have_css('.debate', count: 4) expect(page).to have_content(debate2.title) expect(page).to have_content(debate4.title) expect(page).to have_content(debate5.title) + expect(page).to have_content(debate6.title) expect(page).to_not have_content(debate1.title) expect(page).to_not have_content(debate3.title) end