mirror of
https://github.com/github/rails.git
synced 2026-02-06 04:05:17 -05:00
Don't inspect unloaded associations. Closes #2905.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5478 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
*SVN*
|
||||
|
||||
* Don't inspect unloaded associations. #2905 [lmarlow]
|
||||
|
||||
* SQLite: use AUTOINCREMENT primary key in >= 3.1.0. #6588 [careo]
|
||||
|
||||
* Cache inheritance_column. #6592 [Stefan Kaes]
|
||||
|
||||
@@ -72,6 +72,10 @@ module ActiveRecord
|
||||
loaded
|
||||
end
|
||||
|
||||
def inspect
|
||||
loaded? ? @target.inspect : "<#{@reflection.name} not loaded yet>"
|
||||
end
|
||||
|
||||
protected
|
||||
def dependent?
|
||||
@reflection.options[:dependent] || false
|
||||
|
||||
@@ -87,6 +87,35 @@ class AssociationProxyTest < Test::Unit::TestCase
|
||||
david.posts_with_extension.first # force load target
|
||||
assert_equal david.posts_with_extension, david.posts_with_extension.testing_proxy_target
|
||||
end
|
||||
|
||||
def test_inspect_does_not_load_target
|
||||
david = authors(:david)
|
||||
not_loaded_string = '<posts not loaded yet>'
|
||||
not_loaded_re = Regexp.new(not_loaded_string)
|
||||
|
||||
2.times do
|
||||
assert !david.posts.loaded?, "Posts should not be loaded yet"
|
||||
assert_match not_loaded_re, david.inspect
|
||||
assert_equal not_loaded_string, david.posts.inspect
|
||||
|
||||
assert !david.posts.empty?, "There should be more than one post"
|
||||
assert !david.posts.loaded?, "Posts should still not be loaded yet"
|
||||
assert_match not_loaded_re, david.inspect
|
||||
assert_equal not_loaded_string, david.posts.inspect
|
||||
|
||||
assert !david.posts.find(:all).empty?, "There should be more than one post"
|
||||
assert !david.posts.loaded?, "Posts should still not be loaded yet"
|
||||
assert_match not_loaded_re, david.inspect
|
||||
assert_equal not_loaded_string, david.posts.inspect
|
||||
|
||||
assert !david.posts(true).empty?, "There should be more than one post"
|
||||
assert david.posts.loaded?, "Posts should be loaded now"
|
||||
assert_no_match not_loaded_re, david.inspect
|
||||
assert_not_equal not_loaded_string, david.posts.inspect
|
||||
|
||||
david.reload
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class HasOneAssociationsTest < Test::Unit::TestCase
|
||||
|
||||
Reference in New Issue
Block a user