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
-~----------~----~----~----~------~----~------~--~---