Changeset 8839
- Timestamp:
- 02/10/08 01:10:43 (7 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/2-0-stable/activerecord/lib/active_record/base.rb
r8585 r8839 2392 2392 2393 2393 # Includes an ugly hack for Time.local instead of Time.new because the latter is reserved by Time itself. 2394 def instantiate_time_object(*values) 2395 @@default_timezone == :utc ? Time.utc(*values) : Time.local(*values) 2396 end 2397 2394 2398 def execute_callstack_for_multiparameter_attributes(callstack) 2395 2399 errors = [] … … 2400 2404 else 2401 2405 begin 2402 send(name + "=", Time == klass ? (@@default_timezone == :utc ? klass.utc(*values) : klass.local(*values)) : klass.new(*values)) 2406 value = if Time == klass 2407 instantiate_time_object(*values) 2408 elsif Date == klass 2409 begin 2410 Date.new(*values) 2411 rescue ArgumentError => ex # if Date.new raises an exception on an invalid date 2412 instantiate_time_object(*values).to_date # we instantiate Time object and convert it back to a date thus using Time's logic in handling invalid dates 2413 end 2414 else 2415 klass.new(*values) 2416 end 2417 2418 send(name + "=", value) 2403 2419 rescue => ex 2404 2420 errors << AttributeAssignmentError.new("error on assignment #{values.inspect} to #{name}", ex, name)