【问题标题】:Rails Migration - what's the point of self.up and self.downRails 迁移 - self.up 和 self.down 的意义何在
【发布时间】:2012-06-23 20:19:39
【问题描述】:

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

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

  def self.down
  end
end

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

class ChangeTimeColumns < ActiveRecord::Migration
  def change
  end
end

不胜感激。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 rake


    【解决方案1】:

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

    self.down 与之相反。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        self.up 用于定义rake db:migrate 上应该发生的行为,而 self.down 定义了rake db:rollback 的行为。 Change 相对较新,通常用于可以通过简单的方式推断 self.down 行为的情况。

        【讨论】:

          【解决方案4】:

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

          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-05-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-05-08
            • 2022-08-18
            • 2010-10-16
            • 1970-01-01
            相关资源
            最近更新 更多