aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillermo Iguaran <guilleiguaran@gmail.com>2017-02-21 21:04:04 +0900
committerGitHub <noreply@github.com>2017-02-21 21:04:04 +0900
commit5716c4ddf4e03c75bd50df901a515ac445167a99 (patch)
tree0cfb205b0f2711563b1f746c2c34acff8b4337c3
parentba22c5ee84e7bbd22a3ba97eaa1d0bf9619cbfea (diff)
parent0b157f8ded03ef988308a135e12c9bc99a1cc703 (diff)
downloadrails-5716c4ddf4e03c75bd50df901a515ac445167a99.tar.gz
rails-5716c4ddf4e03c75bd50df901a515ac445167a99.tar.bz2
rails-5716c4ddf4e03c75bd50df901a515ac445167a99.zip
Merge pull request #28092 from sikachu/fix-define_attribute_method-with-symbol-in-ar
Fix `define_attribute_method` with Symbol in AR
-rw-r--r--activemodel/lib/active_model/attribute_methods.rb2
-rw-r--r--activerecord/test/cases/attribute_methods_test.rb7
2 files changed, 8 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
diff --git a/activerecord/test/cases/attribute_methods_test.rb b/activerecord/test/cases/attribute_methods_test.rb
index 3dc0c0ce53..4d24a980dc 100644
--- a/activerecord/test/cases/attribute_methods_test.rb
+++ b/activerecord/test/cases/attribute_methods_test.rb
@@ -866,6 +866,13 @@ class AttributeMethodsTest < ActiveRecord::TestCase
assert subklass.method_defined?(:id), "subklass is missing id method"
end
+ test "define_attribute_method works with both symbol and string" do
+ klass = Class.new(ActiveRecord::Base)
+
+ assert_nothing_raised { klass.define_attribute_method(:foo) }
+ assert_nothing_raised { klass.define_attribute_method("bar") }
+ end
+
test "read_attribute with nil should not asplode" do
assert_nil Topic.new.read_attribute(nil)
end