Bug or Feature?

carl.lerche@gmail.com
Fri, 29 Sep 2006 17:29:21 -0000

Hello,

I know this came up before hand, but I haven''t seen a conclusive
answer. This is with regards to the MultiparameterAssignmentErrors and
select_date when submitting an invalid date (September 31st for
example). It seems that when an invalid date is submitted, the date
value should be set to nil as opposed to throw an exception that seems
a bit hard to catch elegantly and then provide validation.

The exception is raised in ActiveRecord::Base line 2002 and seems that
throwing that exception there is the intended feature.

That bit of code could possibly be rewritten as (completely un tested):

------------------
def execute_callstack_for_multiparameter_attributes(callstack)
       errors = []
       callstack.each do |name, values|
         klass = (self.class.reflect_on_aggregation(name.to_sym) ||
column_for_attribute(name)).klass
         if values.empty?
           send(name + "=", nil)
         else
           begin
             send(name + "=", Time == klass ? klass.local(*values) :
klass.new(*values))
           rescue => ex
             send(name + "=", nil)
           end
         end
       end
       unless errors.empty?
         raise MultiparameterAssignmentErrors.new(errors),
"#{errors.size} error(s) on assignment of multiparameter attributes"
       end
     end
-------------------

So, I''m not sure exactly what would be a good way to move this to
validations?


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com
To unsubscribe from this group, send email to
rubyonrails-core-unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core
-~----------~----~----~----~------~----~------~--~---