Re: Bug or Feature?

MacProBob
Fri, 29 Sep 2006 22:13:40 -0000

I agree that MultiParameterAttributes handling should be refactored,
but since it probably won''t be, here are a few alternatives.

You can catch the error like shown here:
http://i.nfectio.us/articles/2006/02/22/handling-invalid-dates-with-activerecord-date-helpers

Or you can just bypass Rails dates and handle freeform input using the
Chronic library like shown here:
http://i.nfectio.us/articles/2006/09/07/validate-dates-in-your-models

My suggestion is to not use the Rails Date Helpers.

Bob Silva

carl.lerche@gmail.com wrote:
> 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
-~----------~----~----~----~------~----~------~--~---