我是Rails的新手 - 我开了一个新的rails应用rails new test
,然后是rails generate scaffold Name column1:datatype column2:datatype
在教程中,我打开12345678timestamp_create_names.rb
文件后我def change
,但教程同时包含def self.up
和def self.down
为什么?有什么区别?我应该现在编辑我的应用程序吗?在未来?
答案 0 :(得分:2)
迁移已从rails2更改为rails3,现在rails3足够智能,可以了解它应如何响应您的命令
因此,请将change
视为up
和down
的组合
如果你说
rake db:migrate
它会将其视为up
rake db:rollback
它会将其视为down
答案 1 :(得分:1)
Rails 3.1为迁移引入了新的更改方法。
Rails 3.1通过提供新的更改方法使迁移变得更加智能。 这种方法是编写建设性迁移的首选(添加 列或表)。迁移知道如何迁移数据库 并且在不需要回滚迁移时将其反转 写一个单独的向下方法。
因此,您的教程可能涵盖了Rails 3.0,但不包括Rails 2,因为您已经使用Rails 3命令创建了一个新的应用程序。