`:within` option as alias of `:in` as documented. Fix #7118
At the end of initialize_dup was added the call to super if it exists, so it also works with 1.8.7 where initialize_dup doesn't exist. This issu was introduced with the pull request #6324
… true as the second param
Backported from master.
Requiring 'active_model/naming' will raise an uninitialized constant ActiveSupport::Deprecation exception because the module core extension doesn't require 'active_support/deprecation'. This require cannot be added to the core extension because of circular dependency issues.
Since ActiveModel::Errors instance keeps all error messages as hash we should duplicate this object as well. Previously ActiveModel::Errors was a subclass of ActiveSupport::OrderedHash, which results in different behavior on dup, this may result in regression for people relying on it. Because Rails 3.2 stills supports Ruby 1.8.7 in order to properly fix this regression we need to backport #initialize_dup.
… use delegation
Without that patch when using ActiveModel::AttributeMethods in a class that does not respond to `attributes` method, stack level too deep error will be raised on non existing method. While documentation is clear that you need to define `attributes` method in order to use AttributeMethods module, `stack level too deep` is rather obscure and hard to debug, therefore we should try to not break `method_missing` if someone forgets about defining `attributes`.