I found a solution to the problem of month/day ordering by overriding the autocasting code in ActiveRecord. However, that didn't solve the problem more generally. So I came up with a nicer solution that uses the existing Date::Format._parse_sla_eu method. It replaces the US year/month/day parsing method with the European one.
# Overrides the default Date::_parse() method for dates of format dd/mm/yyyy
# ParseDate does the typical American thing and assumes mm/dd/yyy and
# doesn't seem to be configurable
module Date::Format::EuropeanDates
  def self.included(base)
    base.class_eval do
      class << self
        alias_method :_parse_sla_us, :_parse_sla_eu
      end
    end
  end
end
Date.send(:include, Date::Format::EuropeanDates)
With thanks to Simon who showed me how to replace static methods. This is the kind of wacky stuff you could never do with PHP. Not that we should want to. It's kind of ridiculous.
 
[…] I found a better solution that changes the date parsing code […]
Fat Vegan › Rails autocasting date strings with wrong day month order / 10:36pm / 12 June 2008
For Ruby 1.8.7 it seems to be changed to:
alias_method :_parse_us, :_parse_euKamil Kukura / 9:44pm / 6 January 2009