diff --git a/app/models/version.rb b/app/models/version.rb index 74c3309e9..53d1d7758 100644 --- a/app/models/version.rb +++ b/app/models/version.rb @@ -134,7 +134,7 @@ class Version < ActiveRecord::Base scope :like, lambda {|arg| if arg.present? pattern = "%#{arg.to_s.strip}%" - where("LOWER(#{Version.table_name}.name) LIKE :p", :p => pattern) + where([Redmine::Database.like("#{Version.table_name}.name", '?'), pattern]) end } scope :open, lambda { where(:status => 'open') } diff --git a/test/unit/version_test.rb b/test/unit/version_test.rb index fe4993ca6..27f5ef1d0 100644 --- a/test/unit/version_test.rb +++ b/test/unit/version_test.rb @@ -277,6 +277,16 @@ class VersionTest < ActiveSupport::TestCase assert_equal false, version.deletable? end + def test_like_scope_should_return_case_insensitive_version_names_partially_matched_versions + version = Version.create!(:project => Project.find(1), :name => 'Test Version') + + assert_includes Version.like('Test Version'), version + assert_includes Version.like('TEST VERSION'), version + assert_includes Version.like('test version'), version + assert_includes Version.like('test'), version + assert_includes Version.like('version'), version + end + private def add_issue(version, attributes={})