diff options
author | Sean Griffin <sean@seantheprogrammer.com> | 2018-10-30 12:52:23 -0600 |
---|---|---|
committer | Sean Griffin <sean@seantheprogrammer.com> | 2018-10-30 12:52:23 -0600 |
commit | b63701e272f3dc932ba7a20127f6dc82b567cfb4 (patch) | |
tree | 1eb65b792ad7835c67449c81cb6c4f1b7b4be1d3 /activerecord/test | |
parent | 9a18a10e1cf6dd971d170f3684717c2ffe687776 (diff) | |
download | rails-b63701e272f3dc932ba7a20127f6dc82b567cfb4.tar.gz rails-b63701e272f3dc932ba7a20127f6dc82b567cfb4.tar.bz2 rails-b63701e272f3dc932ba7a20127f6dc82b567cfb4.zip |
`update_columns` raises if the column is unknown
Previosly, `update_columns` would just take whatever keys you gave it
and tried to run the update query. Most likely this would result in an
error from the database. However, if the column actually did exist, but
was in `ignored_columns`, this would result in the method returning
successfully when it should have raised, and an attribute that should
not exist written to `@attributes`.
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/attribute_methods_test.rb | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/activerecord/test/cases/attribute_methods_test.rb b/activerecord/test/cases/attribute_methods_test.rb index 0bfd46a522..6c2e256447 100644 --- a/activerecord/test/cases/attribute_methods_test.rb +++ b/activerecord/test/cases/attribute_methods_test.rb @@ -310,6 +310,12 @@ class AttributeMethodsTest < ActiveRecord::TestCase assert_equal "New topic", topic.title end + test "write_attribute raises ActiveModel::MissingAttributeError when the attribute does not exist" do + topic = Topic.first + assert_raises(ActiveModel::MissingAttributeError) { topic.update_columns(no_column_exists: "Hello!") } + assert_raises(ActiveModel::UnknownAttributeError) { topic.update(no_column_exists: "Hello!") } + end + test "read_attribute" do topic = Topic.new topic.title = "Don't change the topic" |