Hi, @Ivan, thanks :-)
Since this is a credit card field, we are going to just have separate explicit fields for month and year, as that's what the acquirer wants anyway. I was worried about how to handle validations on the combined date, but we don't need to validate at that level. Rather we validate for all the credit card fields together. Perhaps it might be a good idea to see multi-parameter attributes factored out of AR and into ActiveModel? Thanks again. Steve On Thursday, 8 November 2012 at 9:39 AM, Ivan Vanderbyl wrote: > Hi Steve, > > This is handled by ActiveRecord usually in > ActiveRecord::AttributeAssignment#assign_multiparameter_attributes > (https://github.com/rails/rails/blob/master/activerecord/lib/active_record/attribute_assignment.rb#L62-66) > > You could experiment with either mixing in that module or pulling out the > #assign_multiparameter_attributes methods into your own module and using it > with ActiveModel. > > AFAIK there is no equivalent for ActiveModel. > > — Ivan > > On 08/11/2012, at 8:55 AM, Steven Ringo <[email protected] > (mailto:[email protected])> wrote: > > Hi all, > > > > Anyone have any idea on the best way to parse a date from a rails form and > > coerce it into a date field in an active model object. > > > > Rails send this in the params hash: > > > > "credit_card_expiry(3i)"=>"1", "credit_card_expiry(2i)"=>"11", > > "credit_card_expiry(1i)"=>"2012" > > > > However the model sees these as being three separate attributes, and of > > course the the active model object has no way of knowing this. > > > > I have seen techniques that manually mangle the hash like so (or > > introspective variants), but this feels very hacky. > > > > params[:subscription][:credit_card_expiry] = > > Date.new(params[:subscription][:"credit_card_expiry(1i)"].to_i, > > params[:subscription][:"credit_card_expiry(2i)"].to_i, > > params[:subscription][:"credit_card_expiry(3i)"].to_i) > > params[:subscription].delete(:"credit_card_expiry(1i)") > > params[:subscription].delete(:"credit_card_expiry(2i)") > > params[:subscription].delete(:"credit_card_expiry(3i)") > > > > Thanks, > > Steve > > > > -- > > You received this message because you are subscribed to the Google Groups > > "Ruby or Rails Oceania" group. > > To view this discussion on the web visit > > https://groups.google.com/d/msg/rails-oceania/-/5N1Kll4oUZ4J. > > To post to this group, send email to [email protected] > > (mailto:[email protected]). > > To unsubscribe from this group, send email to > > [email protected] > > (mailto:[email protected]). > > For more options, visit this group at > > http://groups.google.com/group/rails-oceania?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Ruby or Rails Oceania" group. > To post to this group, send email to [email protected] > (mailto:[email protected]). > To unsubscribe from this group, send email to > [email protected] > (mailto:[email protected]). > For more options, visit this group at > http://groups.google.com/group/rails-oceania?hl=en. -- You received this message because you are subscribed to the Google Groups "Ruby or Rails Oceania" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rails-oceania?hl=en.
