Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
e4790a2c
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
e4790a2c
编写于
10月 28, 2012
作者:
Y
Yves Senn
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
raise `ArgumentError` when redefining the primary key column. Closes #6378
上级
b1041573
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
34 addition
and
0 deletion
+34
-0
activerecord/CHANGELOG.md
activerecord/CHANGELOG.md
+5
-0
activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
...record/connection_adapters/abstract/schema_definitions.rb
+9
-0
activerecord/test/cases/migration/change_schema_test.rb
activerecord/test/cases/migration/change_schema_test.rb
+20
-0
未找到文件。
activerecord/CHANGELOG.md
浏览文件 @
e4790a2c
## Rails 4.0.0 (unreleased) ##
*
The
`create_table`
method raises an
`ArgumentError`
when the primary key column is redefined.
Fix #6378
*Yves Senn*
*
`ActiveRecord::AttributeMethods#[]`
raises
`ActiveModel::MissingAttributeError`
error if the given attribute is missing. Fixes #5433.
...
...
activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
浏览文件 @
e4790a2c
...
...
@@ -234,6 +234,10 @@ def column(name, type, options = {})
name
=
name
.
to_s
type
=
type
.
to_sym
if
primary_key_column_name
==
name
raise
ArgumentError
,
"you can't redefine the primary key column '
#{
name
}
'. To define a custom primary key, pass { id: false } to create_table."
end
column
=
self
[
name
]
||
new_column_definition
(
@base
,
name
,
type
)
limit
=
options
.
fetch
(
:limit
)
do
...
...
@@ -302,6 +306,11 @@ def new_column_definition(base, name, type)
definition
end
def
primary_key_column_name
primary_key_column
=
columns
.
detect
{
|
c
|
c
.
type
==
:primary_key
}
primary_key_column
&&
primary_key_column
.
name
end
def
native
@base
.
native_database_types
end
...
...
activerecord/test/cases/migration/change_schema_test.rb
浏览文件 @
e4790a2c
...
...
@@ -132,6 +132,26 @@ def test_create_table_with_primary_key_prefix_as_table_name
assert_equal
%w(foo testingid)
,
connection
.
columns
(
:testings
).
map
(
&
:name
).
sort
end
def
test_create_table_raises_when_redefining_primary_key_column
error
=
assert_raise
(
ArgumentError
)
do
connection
.
create_table
:testings
do
|
t
|
t
.
column
:id
,
:string
end
end
assert_equal
"you can't redefine the primary key column 'id'. To define a custom primary key, pass { id: false } to create_table."
,
error
.
message
end
def
test_create_table_raises_when_redefining_custom_primary_key_column
error
=
assert_raise
(
ArgumentError
)
do
connection
.
create_table
:testings
,
primary_key: :testing_id
do
|
t
|
t
.
column
:testing_id
,
:string
end
end
assert_equal
"you can't redefine the primary key column 'testing_id'. To define a custom primary key, pass { id: false } to create_table."
,
error
.
message
end
def
test_create_table_with_timestamps_should_create_datetime_columns
connection
.
create_table
table_name
do
|
t
|
t
.
timestamps
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录