aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/base.rb
diff options
context:
space:
mode:
authorXavier Noria <fxn@hashref.com>2011-07-23 11:20:12 -0700
committerXavier Noria <fxn@hashref.com>2011-07-23 11:20:12 -0700
commita62f450661860dcc70743fb0807447560b3371a0 (patch)
tree2b9b6fa7476945b211b4cb2a63dc665898171539 /activerecord/lib/active_record/base.rb
parent35c87a139aa43c37fad018ef87fe5c2939a3b580 (diff)
parent9cd1f754d032e8db2415f9791061dc3813684c5e (diff)
downloadrails-a62f450661860dcc70743fb0807447560b3371a0.tar.gz
rails-a62f450661860dcc70743fb0807447560b3371a0.tar.bz2
rails-a62f450661860dcc70743fb0807447560b3371a0.zip
Merge pull request #2086 from amatsuda/date_multiparameter_nil
convert multiple Date parameters into a nil if any of its bits were blank
Diffstat (limited to 'activerecord/lib/active_record/base.rb')
-rw-r--r--activerecord/lib/active_record/base.rb9
1 files changed, 6 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb
index 99ed273a8a..c26119287a 100644
--- a/activerecord/lib/active_record/base.rb
+++ b/activerecord/lib/active_record/base.rb
@@ -2027,15 +2027,18 @@ MSG
# If Date bits were not provided, error
raise "Missing Parameter" if [1,2,3].any?{|position| !values_hash_from_param.has_key?(position)}
max_position = extract_max_param_for_multiparameter_attributes(values_hash_from_param, 6)
+ # If Date bits were provided but blank, then return nil
+ return nil if (1..3).any? {|position| values_hash_from_param[position].blank?}
+
set_values = (1..max_position).collect{|position| values_hash_from_param[position] }
- # If Date bits were provided but blank, then default to 1
# If Time bits are not there, then default to 0
- [1,1,1,0,0,0].each_with_index{|v,i| set_values[i] = set_values[i].blank? ? v : set_values[i]}
+ (3..5).each {|i| set_values[i] = set_values[i].blank? ? 0 : set_values[i]}
instantiate_time_object(name, set_values)
end
def read_date_parameter_value(name, values_hash_from_param)
- set_values = (1..3).collect{|position| values_hash_from_param[position].blank? ? 1 : values_hash_from_param[position]}
+ return nil if (1..3).any? {|position| values_hash_from_param[position].blank?}
+ set_values = [values_hash_from_param[1], values_hash_from_param[2], values_hash_from_param[3]]
begin
Date.new(*set_values)
rescue ArgumentError # if Date.new raises an exception on an invalid date