3

我想知道这些是什么意思:

class ChangeTimeColumns < ActiveRecord::Migration
  def self.up
  end

  def self.down
  end
end

有时 Rails 会像这样创建迁移:

class ChangeTimeColumns < ActiveRecord::Migration
  def change
  end
end

任何澄清将不胜感激。

4

4 回答 4

3

如果您犯了错误,您可以逆转迁移。

rake db:rollback   #this will rollback the most recent migration


rake db:rollback STEP=3  #this will rollback 3 of them

我将 self.up 和 self.down 添加到我所有的迁移中,如果存在无法撤消的迁移,则不能包含 down 或在 down 中引发异常。查看本指南中的第 4.1 节 ====> http://guides.rubyonrails.org/migrations.html#using-the-up-down-methods

于 2012-06-21T14:58:47.907 回答
1

在当前版本的 rails 之前,self.up 和 self.down 是标准格式,即在 Rails 3.0.x 中

self.up 用于定义应该在rake db:migratewhere 上发生的行为,因为 self.down 定义了 a 的行为rake db:rollback。Change 相对较新,通常用于可以以微不足道的方式推断 self.down 行为的地方。

于 2012-06-21T14:59:28.187 回答
0

您在 self.up 中执行的每个 INSERT、UPDATE 等操作,您在 self.down 中执行相反的操作。

如果您以后由于错误而必须回滚这些迁移,这一点很重要。

于 2012-06-21T15:01:47.053 回答
0

Self.up 让任何模型将属性插入到其中写入的模型表中。

而 self.down 与之相反。

于 2012-06-21T15:04:49.407 回答