提交 a5921270 编写于 作者: R Rafael França

Merge pull request #23345 from yui-knk/warning_when_composite_primary_key_is_detected

Warn if `AR.primary_key` is called for a table who has composite prim…
...@@ -125,6 +125,12 @@ def column_exists?(table_name, column_name, type = nil, options = {}) ...@@ -125,6 +125,12 @@ def column_exists?(table_name, column_name, type = nil, options = {})
# Returns just a table's primary key # Returns just a table's primary key
def primary_key(table_name) def primary_key(table_name)
pks = primary_keys(table_name) pks = primary_keys(table_name)
warn <<-WARNING.strip_heredoc if pks.count > 1
WARNING: Rails does not support composite primary key.
#{table_name} has composite primary key. Composite primary key is ignored.
WARNING
pks.first if pks.one? pks.first if pks.one?
end end
......
...@@ -260,6 +260,13 @@ def test_composite_primary_key ...@@ -260,6 +260,13 @@ def test_composite_primary_key
assert_equal ["region", "code"], @connection.primary_keys("barcodes") assert_equal ["region", "code"], @connection.primary_keys("barcodes")
end end
def test_primary_key_issues_warning
warning = capture(:stderr) do
@connection.primary_key("barcodes")
end
assert_match(/WARNING: Rails does not support composite primary key\./, warning)
end
def test_collectly_dump_composite_primary_key def test_collectly_dump_composite_primary_key
schema = dump_table_schema "barcodes" schema = dump_table_schema "barcodes"
assert_match %r{create_table "barcodes", primary_key: \["region", "code"\]}, schema assert_match %r{create_table "barcodes", primary_key: \["region", "code"\]}, schema
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册