Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
4be5bce1
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,发现更多精彩内容 >>
提交
4be5bce1
编写于
5月 06, 2013
作者:
R
Rafael Mendonça França
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #10437 from neerajdotname/10419
raise IrreversibleMigration if no column given
上级
32b4abdd
3771e4d5
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
49 addition
and
1 deletion
+49
-1
activerecord/CHANGELOG.md
activerecord/CHANGELOG.md
+17
-0
activerecord/lib/active_record/migration/command_recorder.rb
activerecord/lib/active_record/migration/command_recorder.rb
+4
-1
activerecord/test/cases/invertible_migration_test.rb
activerecord/test/cases/invertible_migration_test.rb
+28
-0
未找到文件。
activerecord/CHANGELOG.md
浏览文件 @
4be5bce1
*
While removing index if column option is missing then raise IrreversibleMigration exception.
Following code should raise `IrreversibleMigration`. But the code was
failing since options is an array and not a hash.
def change
change_table :users do |t|
t.remove_index [:name, :email]
end
end
Fix was to check if the options is a Hash before operating on it.
Fixes #10419.
*Neeraj Singh*
*
Do not overwrite manually built records during one-to-one nested attribute assignment
For one-to-one nested associations, if you build the new (in-memory)
...
...
activerecord/lib/active_record/migration/command_recorder.rb
浏览文件 @
4be5bce1
...
...
@@ -144,7 +144,10 @@ def invert_add_index(args)
def
invert_remove_index
(
args
)
table
,
options
=
*
args
raise
ActiveRecord
::
IrreversibleMigration
,
"remove_index is only reversible if given a :column option."
unless
options
&&
options
[
:column
]
unless
options
&&
options
.
is_a?
(
Hash
)
&&
options
[
:column
]
raise
ActiveRecord
::
IrreversibleMigration
,
"remove_index is only reversible if given a :column option."
end
options
=
options
.
dup
[
:add_index
,
[
table
,
options
.
delete
(
:column
),
options
]]
...
...
activerecord/test/cases/invertible_migration_test.rb
浏览文件 @
4be5bce1
...
...
@@ -58,6 +58,24 @@ def change
end
end
class
RemoveIndexMigration1
<
SilentMigration
def
self
.
up
create_table
(
"horses"
)
do
|
t
|
t
.
column
:name
,
:text
t
.
column
:color
,
:text
t
.
index
[
:name
,
:color
]
end
end
end
class
RemoveIndexMigration2
<
SilentMigration
def
change
change_table
(
"horses"
)
do
|
t
|
t
.
remove_index
[
:name
,
:color
]
end
end
end
class
LegacyMigration
<
ActiveRecord
::
Migration
def
self
.
up
create_table
(
"horses"
)
do
|
t
|
...
...
@@ -104,6 +122,16 @@ def test_no_reverse
end
end
def
test_exception_on_removing_index_without_column_option
RemoveIndexMigration1
.
new
.
migrate
(
:up
)
migration
=
RemoveIndexMigration2
.
new
migration
.
migrate
(
:up
)
assert_raises
(
IrreversibleMigration
)
do
migration
.
migrate
(
:down
)
end
end
def
test_migrate_up
migration
=
InvertibleMigration
.
new
migration
.
migrate
(
:up
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录