]> source.dussan.org Git - redmine.git/commitdiff
Keep invalid values and add validation error message.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 10 Jul 2011 18:34:49 +0000 (18:34 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 10 Jul 2011 18:34:49 +0000 (18:34 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@6229 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/query.rb
test/unit/query_test.rb

index b9be0851968ccc796b35dd1789c022e1373a00bc..411f0d23551a06a2d1511b1b3d4633f9445d8cff 100644 (file)
@@ -170,6 +170,10 @@ class Query < ActiveRecord::Base
 
   def validate
     filters.each_key do |field|
+      if type_for(field) == :integer && values_for(field)
+        errors.add label_for(field), :invalid if values_for(field).detect {|v| v.present? && !v.match(/^\d+(\.\d+)?$/) }
+      end
+      
       errors.add label_for(field), :blank unless
           # filter requires one or more values
           (values_for(field) and !values_for(field).first.blank?) or
@@ -278,11 +282,7 @@ class Query < ActiveRecord::Base
       #  allowed_values = values & ([""] + (filter_options[:values] || []).collect {|val| val[1]})
       #  filters[field] = {:operator => operator, :values => allowed_values } if (allowed_values.first and !allowed_values.first.empty?) or ["o", "c", "!*", "*", "t"].include? operator
       #end
-      values ||= ['']
-      if filter_options[:type] == :integer
-        values = values.select {|v| v.blank? || v.match(/^\d+(\.\d+)?$/) }
-      end
-      filters[field] = {:operator => operator, :values => values }
+      filters[field] = {:operator => operator, :values => (values || [''])}
     end
   end
 
index 95308ee0c114ae04a9cc6e6dedcb9bad0446c1a3..ef48a8ad8815cf9bbccc4c09059d8f3017ca4e6c 100644 (file)
@@ -106,7 +106,6 @@ class QueryTest < ActiveSupport::TestCase
     query.add_filter('estimated_hours', '=', ['a'])
     
     assert query.has_filter?('estimated_hours')
-    assert query.values_for('estimated_hours').empty?
     assert !query.valid?
   end