diff options
author | Prem Sichanugrist <s@sikac.hu> | 2017-02-21 19:59:56 +0900 |
---|---|---|
committer | Prem Sichanugrist <s@sikac.hu> | 2017-02-21 20:33:32 +0900 |
commit | 0b157f8ded03ef988308a135e12c9bc99a1cc703 (patch) | |
tree | 62b97831d0f6120526acdc63fe4df78b21744030 /activemodel | |
parent | c1b64429b1af45a4a526b3b5bb5a306a0d51e28a (diff) | |
download | rails-0b157f8ded03ef988308a135e12c9bc99a1cc703.tar.gz rails-0b157f8ded03ef988308a135e12c9bc99a1cc703.tar.bz2 rails-0b157f8ded03ef988308a135e12c9bc99a1cc703.zip |
Fix `define_attribute_method` with Symbol in AR
This issue is only appear when you try to call `define_attribute_method`
and passing a symbol in Active Record. It does not appear in isolation
in Active Model itself.
Before this patch, when you run `User.define_attribute_method :foo`, you
will get:
NoMethodError: undefined method `unpack' for :foo:Symbol
from activerecord/lib/active_record/attribute_methods/read.rb:28:in `define_method_attribute'
from activerecord/lib/active_record/attribute_methods/primary_key.rb:61:in `define_method_attribute'
from activemodel/lib/active_model/attribute_methods.rb:292:in `block in define_attribute_method'
from activemodel/lib/active_model/attribute_methods.rb:285:in `each'
from activemodel/lib/active_model/attribute_methods.rb:285:in `define_attribute_method'
This patch contains both a fix in Active Model and a test in Active
Record for this error.
Diffstat (limited to 'activemodel')
-rw-r--r-- | activemodel/lib/active_model/attribute_methods.rb | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/activemodel/lib/active_model/attribute_methods.rb b/activemodel/lib/active_model/attribute_methods.rb index 09825cf861..166c6ac21f 100644 --- a/activemodel/lib/active_model/attribute_methods.rb +++ b/activemodel/lib/active_model/attribute_methods.rb @@ -289,7 +289,7 @@ module ActiveModel generate_method = "define_method_#{matcher.method_missing_target}" if respond_to?(generate_method, true) - send(generate_method, attr_name) + send(generate_method, attr_name.to_s) else define_proxy_call true, generated_attribute_methods, method_name, matcher.method_missing_target, attr_name.to_s end |