Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
3baee098
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,发现更多精彩内容 >>
提交
3baee098
编写于
8月 05, 2013
作者:
X
Xavier Noria
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
migrations guide: fix and edits [ci skip]
上级
538bd363
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
7 deletion
+9
-7
guides/source/migrations.md
guides/source/migrations.md
+9
-7
未找到文件。
guides/source/migrations.md
浏览文件 @
3baee098
...
...
@@ -829,8 +829,7 @@ which contains a `Product` model:
Bob goes on vacation.
Alice creates a migration for the
`products`
table which adds a new column and
initializes it. She also adds a validation to the
`Product`
model for the new
column.
initializes it:
```
ruby
# db/migrate/20100513121110_add_flag_to_product.rb
...
...
@@ -845,6 +844,8 @@ class AddFlagToProduct < ActiveRecord::Migration
end
```
She also adds a validation to the
`Product`
model for the new column:
```
ruby
# app/models/product.rb
...
...
@@ -853,9 +854,8 @@ class Product < ActiveRecord::Base
end
```
Alice adds a second migration which adds and initializes another column to the
`products`
table and also adds a validation to the
`Product`
model for the new
column.
Alice adds a second migration which adds another column to the
`products`
table and initializes it:
```
ruby
# db/migrate/20100515121110_add_fuzz_to_product.rb
...
...
@@ -870,6 +870,8 @@ class AddFuzzToProduct < ActiveRecord::Migration
end
```
She also adds a validation to the
`Product`
model for the new column:
```
ruby
# app/models/product.rb
...
...
@@ -903,7 +905,7 @@ A fix for this is to create a local model within the migration. This keeps
Rails from running the validations, so that the migrations run to completion.
When using a local model, it's a good idea to call
`Product.reset_column_information`
to refresh the
`ActiveRecord`
cache for the
`Product.reset_column_information`
to refresh the
Active Record
cache for the
`Product`
model prior to updating data in the database.
If Alice had done this instead, there would have been no problem:
...
...
@@ -956,7 +958,7 @@ other product attributes.
These migrations run just fine, but when Bob comes back from his vacation
and calls
`rake db:migrate`
to run all the outstanding migrations, he gets a
subtle bug: The descriptions have defaults, and the
`fuzz`
column is present,
but
`fuzz`
is
nil
on all products.
but
`fuzz`
is
`nil`
on all products.
The solution is again to use
`Product.reset_column_information`
before
referencing the Product model in a migration, ensuring the Active Record's
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录