Fil*_*uzi 6 database migration sqlite ruby-on-rails
def up; end
和之间有什么区别def change; end
?我有代码
class CreateTweets < ActiveRecord::Migration
def change
create_table :tweets do |t|
t.string :status
t.integer :zombie_id
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
如果我定义def up
而不是改变它会改变什么def change
?
geo*_*ock 14
该up
方法应该伴随一种down
方法,可以用来撤消迁移的变化.例如,如果您使用向上和向下编写问题中的示例,则需要以下代码:
class CreateTweets < ActiveRecord::Migration
def up
create_table :tweets do |t|
t.string :status
t.integer :zombie_id
t.timestamps
end
end
def down
drop_table :tweets
end
end
Run Code Online (Sandbox Code Playgroud)
change
另一方面,该方法可以由Rails自动反转,因此无需手动创建down
方法.
change
引入替换up
,down
因为大多数down
方法可以很容易地根据up
方法预测(在上面的例子drop_table
显然是相反的create_table
).
在无法自动派生反向操作的情况下,您可以使用up
和down
方法,也可以reversible
从change
方法中调用方法.
有关详细信息,请参阅Rails迁移指南的第3.6 - 3.7节.
归档时间: |
|
查看次数: |
5778 次 |
最近记录: |