aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorErnie Miller <ernie@erniemiller.org>2012-09-06 15:39:42 -0400
committerErnie Miller <ernie@erniemiller.org>2012-09-08 17:40:01 -0400
commit4f107da4ffafa2b77d87fc5a6fb09fa34343184c (patch)
tree6b883121105d798ee671d10fb5199971841e5223 /activerecord/lib/active_record
parentf6296601a2fcd440cc12bbc5e0b6c61ce7269ecb (diff)
downloadrails-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/lib/active_record')
-rw-r--r--activerecord/lib/active_record/attribute_methods/query.rb2
1 files changed, 1 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/attribute_methods/query.rb b/activerecord/lib/active_record/attribute_methods/query.rb
index 483fd8f4f8..0f9723febb 100644
--- a/activerecord/lib/active_record/attribute_methods/query.rb
+++ b/activerecord/lib/active_record/attribute_methods/query.rb
@@ -8,7 +8,7 @@ module ActiveRecord
end
def query_attribute(attr_name)
- value = read_attribute(attr_name)
+ value = read_attribute(attr_name) { |n| missing_attribute(n, caller) }
case value
when true then true