diff options
author | Ernie Miller <ernie@erniemiller.org> | 2012-09-06 15:39:42 -0400 |
---|---|---|
committer | Ernie Miller <ernie@erniemiller.org> | 2012-09-08 17:40:01 -0400 |
commit | 4f107da4ffafa2b77d87fc5a6fb09fa34343184c (patch) | |
tree | 6b883121105d798ee671d10fb5199971841e5223 /activerecord/test/cases | |
parent | f6296601a2fcd440cc12bbc5e0b6c61ce7269ecb (diff) | |
download | rails-4f107da4ffafa2b77d87fc5a6fb09fa34343184c.tar.gz rails-4f107da4ffafa2b77d87fc5a6fb09fa34343184c.tar.bz2 rails-4f107da4ffafa2b77d87fc5a6fb09fa34343184c.zip |
Raise MissingAttributeError on query methods
When calling a query method on an attribute that was not selected by
an ActiveRecord query, an ActiveModel::MissingAttributeError is not
raised. Instead, a nil value is returned, which will return false once
cast to boolean.
This is undesirable, as we should not give the impression that we know
the attribute's boolean value when we haven't loaded the attribute's
(possibly) non-boolean value from the database.
This issue is present on versions going back as far as 2.3, at least.
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r-- | activerecord/test/cases/finder_test.rb | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/activerecord/test/cases/finder_test.rb b/activerecord/test/cases/finder_test.rb index 20c8e8894d..d44ac21b05 100644 --- a/activerecord/test/cases/finder_test.rb +++ b/activerecord/test/cases/finder_test.rb @@ -276,6 +276,7 @@ class FinderTest < ActiveRecord::TestCase def test_find_only_some_columns topic = Topic.all.merge!(:select => "author_name").find(1) assert_raise(ActiveModel::MissingAttributeError) {topic.title} + assert_raise(ActiveModel::MissingAttributeError) {topic.title?} assert_nil topic.read_attribute("title") assert_equal "David", topic.author_name assert !topic.attribute_present?("title") |