diff options
-rw-r--r-- | activemodel/lib/active_model/attribute_methods.rb | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/activemodel/lib/active_model/attribute_methods.rb b/activemodel/lib/active_model/attribute_methods.rb index 0075cd3c01..415f1f679b 100644 --- a/activemodel/lib/active_model/attribute_methods.rb +++ b/activemodel/lib/active_model/attribute_methods.rb @@ -352,8 +352,9 @@ module ActiveModel def attribute_method_matchers_matching(method_name) attribute_method_matchers_cache.compute_if_absent(method_name) do - # Must try to match prefixes/suffixes first, or else the matcher with no prefix/suffix - # will match every time. + # Bump plain matcher to last place so that only methods that do not + # match any other pattern match the actual attribute name. + # This is currently only needed to support legacy usage. matchers = attribute_method_matchers.partition(&:plain?).reverse.flatten(1) matchers.map { |matcher| matcher.match(method_name) }.compact end |