aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/relation_test.rb
diff options
context:
space:
mode:
authorNeeraj Singh <neerajdotname@gmail.com>2013-04-13 21:19:17 -0400
committerNeeraj Singh <neerajdotname@gmail.com>2013-04-19 14:09:16 -0400
commit66001f360661fefad89d9e271b9ff75a86b4b886 (patch)
tree838c9686ec081959b7e6f9b007f290212d3bad25 /activerecord/test/cases/relation_test.rb
parent08c6df8532a1884050c8e9087e9fce9df6528ae2 (diff)
downloadrails-66001f360661fefad89d9e271b9ff75a86b4b886.tar.gz
rails-66001f360661fefad89d9e271b9ff75a86b4b886.tar.bz2
rails-66001f360661fefad89d9e271b9ff75a86b4b886.zip
fix respond_to? for non selected column
fixes #4208 If a query selects only a few columns and gives custom names to those columns then respond_to? was returning true for the non selected columns. However calling those non selected columns raises exception. post = Post.select("'title' as post_title").first In the above case when `post.body` is invoked then an exception is raised since `body` attribute is not selected. Howevere `respond_to?` did not behave correctly. pos.respond_to?(:body) #=> true Reason was that Active Record calls `super` to pass the call to Active Model and all the columns are defined on Active Model. Fix is to actually check if the data returned from the db contains the data for column in question.
Diffstat (limited to 'activerecord/test/cases/relation_test.rb')
-rw-r--r--activerecord/test/cases/relation_test.rb5
1 files changed, 5 insertions, 0 deletions
diff --git a/activerecord/test/cases/relation_test.rb b/activerecord/test/cases/relation_test.rb
index 34ecdb3cc9..06723b9d7f 100644
--- a/activerecord/test/cases/relation_test.rb
+++ b/activerecord/test/cases/relation_test.rb
@@ -185,6 +185,11 @@ module ActiveRecord
assert_equal 3, authors(:david).posts.merge(posts_with_special_comments_with_ratings).count.length
end
+ def test_respond_to_for_non_selected_element
+ post = Post.select("'title' as post_title").first
+ assert !post.respond_to?(:body), "post should not respond_to?(:body) since invoking it raises exception"
+ end
+
end
class RelationMutationTest < ActiveSupport::TestCase