未验证 提交 212c28ac 编写于 作者: R Ryuta Kamizono 提交者: GitHub

Merge pull request #34384 from eugeneius/inspect_with_non_primary_key_id_attribute

Fix inspect with non-primary key id attribute
......@@ -328,7 +328,7 @@ def attributes
# person.attribute_for_inspect(:tag_ids)
# # => "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]"
def attribute_for_inspect(attr_name)
value = read_attribute(attr_name)
value = _read_attribute(attr_name)
format_for_inspect(value)
end
......
......@@ -498,7 +498,7 @@ def inspect
inspection = if defined?(@attributes) && @attributes
self.class.attribute_names.collect do |name|
if has_attribute?(name)
attr = read_attribute(name)
attr = _read_attribute(name)
value = if attr.nil?
attr.inspect
else
......@@ -528,7 +528,7 @@ def pretty_print(pp)
pp.text attr_name
pp.text ":"
pp.breakable
value = read_attribute(attr_name)
value = _read_attribute(attr_name)
value = inspection_filter.filter_param(attr_name, value) unless value.nil?
pp.pp value
end
......
......@@ -56,6 +56,13 @@ def setup
assert_equal "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]", t.attribute_for_inspect(:content)
end
test "attribute_for_inspect with a non-primary key id attribute" do
t = topics(:first).becomes(TitlePrimaryKeyTopic)
t.title = "The First Topic Now Has A Title With\nNewlines And More Than 50 Characters"
assert_equal "1", t.attribute_for_inspect(:id)
end
test "attribute_present" do
t = Topic.new
t.title = "hello there!"
......
......@@ -30,6 +30,11 @@ def test_inspect_limited_select_instance
assert_equal %(#<Topic id: 1, title: "The First Topic">), Topic.all.merge!(select: "id, title", where: "id = 1").first.inspect
end
def test_inspect_instance_with_non_primary_key_id_attribute
topic = topics(:first).becomes(TitlePrimaryKeyTopic)
assert_match(/id: 1/, topic.inspect)
end
def test_inspect_class_without_table
assert_equal "NonExistentTable(Table doesn't exist)", NonExistentTable.inspect
end
......@@ -110,4 +115,11 @@ def inspect
PP.pp(subtopic.new, StringIO.new(actual))
assert_equal "inspecting topic\n", actual
end
def test_pretty_print_with_non_primary_key_id_attribute
topic = topics(:first).becomes(TitlePrimaryKeyTopic)
actual = +""
PP.pp(topic, StringIO.new(actual))
assert_match(/id: 1/, actual)
end
end
......@@ -138,6 +138,10 @@ def blank?
end
end
class TitlePrimaryKeyTopic < Topic
self.primary_key = :title
end
module Web
class Topic < ActiveRecord::Base
has_many :replies, dependent: :destroy, foreign_key: "parent_id", class_name: "Web::Reply"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册