Fix Base#inspect when not every attribute is present. Closes #8623.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6995 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
de7a626878
commit
813e8ba93b
|
@ -50,7 +50,7 @@
|
|||
|
||||
* Document warning that associations names shouldn't be reserved words. #4378 [murphy@cYcnus.de, Josh Susser]
|
||||
|
||||
* Sanitize Base#inspect. #8392 [Nik Wakelin]
|
||||
* Sanitize Base#inspect. #8392, #8623 [Nik Wakelin, jnoon]
|
||||
|
||||
* Replace the transaction {|transaction|..} semantics with a new Exception ActiveRecord::Rollback. [Koz]
|
||||
|
||||
|
|
|
@ -1852,7 +1852,6 @@ module ActiveRecord #:nodoc:
|
|||
|
||||
# Format attributes nicely for inspect.
|
||||
def attribute_for_inspect(attr_name)
|
||||
raise "Attribute not present #{attr_name}" unless has_attribute?(attr_name) || new_record?
|
||||
value = read_attribute(attr_name)
|
||||
|
||||
if value.is_a?(String) && value.length > 50
|
||||
|
@ -1947,8 +1946,10 @@ module ActiveRecord #:nodoc:
|
|||
# Nice pretty inspect.
|
||||
def inspect
|
||||
attributes_as_nice_string = self.class.column_names.collect { |name|
|
||||
"#{name}: #{attribute_for_inspect(name)}"
|
||||
}.join(", ")
|
||||
if has_attribute?(name) || new_record?
|
||||
"#{name}: #{attribute_for_inspect(name)}"
|
||||
end
|
||||
}.compact.join(", ")
|
||||
"#<#{self.class} #{attributes_as_nice_string}>"
|
||||
end
|
||||
|
||||
|
|
|
@ -1695,6 +1695,11 @@ class BasicsTest < Test::Unit::TestCase
|
|||
assert_match /Topic id: nil/, Topic.new.inspect
|
||||
end
|
||||
|
||||
def test_inspect_limited_select_instance
|
||||
assert_equal %(#<Topic id: 1>), Topic.find(:first, :select => 'id', :conditions => 'id = 1').inspect
|
||||
assert_equal %(#<Topic id: 1, title: "The First Topic">), Topic.find(:first, :select => 'id, title', :conditions => 'id = 1').inspect
|
||||
end
|
||||
|
||||
def test_attribute_for_inspect
|
||||
t = topics(:first)
|
||||
t.content = %(This is some really long content, longer than 50 characters, so I can test that text is truncated correctly by the new ActiveRecord::Base#inspect method! Yay! BOOM!)
|
||||
|
|
Loading…
Reference in New Issue