diff --git a/app/models/budget/investment.rb b/app/models/budget/investment.rb index 5a8721219..09d0c6733 100644 --- a/app/models/budget/investment.rb +++ b/app/models/budget/investment.rb @@ -201,10 +201,10 @@ class Budget end def self.search_by_title_or_id(title_or_id) - return where(id: title_or_id) if title_or_id =~ /^[0-9]+$/ + with_joins = with_translations(Globalize.fallbacks(I18n.locale)) - with_translations(Globalize.fallbacks(I18n.locale)). - where("budget_investment_translations.title ILIKE ?", "%#{title_or_id}%") + with_joins.where(id: title_or_id). + or(with_joins.where("budget_investment_translations.title ILIKE ?", "%#{title_or_id}%")) end def searchable_values diff --git a/spec/models/budget/investment_spec.rb b/spec/models/budget/investment_spec.rb index dfea5c9d0..d01a10f1d 100644 --- a/spec/models/budget/investment_spec.rb +++ b/spec/models/budget/investment_spec.rb @@ -665,6 +665,12 @@ describe Budget::Investment do expect(Budget::Investment.search_by_title_or_id("Investment title")).to eq([investment]) end + + it "finds investments with numbers in their title" do + investment = create(:budget_investment, title: "99 red balloons") + + expect(Budget::Investment.search_by_title_or_id("99")).to eq([investment]) + end end end