6

有人可以解释一下接下来的事情有什么区别吗?

  1. def self.up
  2. 向上定义
  3. def self.down
  4. 向下定义
4

2 回答 2

11

self.upup包含迁移时运行的代码rake db:migrateself.up是旧版本的up. 我不确定他们是什么时候引入的,但是直到 3.0,他们才使用self.up.

self.down并且down应该包含反转up方法效果的代码。因此,如果您在 上创建了一个表up,则应该将该表放在down. 这些方法在运行时被调用rake db:rollback

实际上,有一种名为迁移的新方法,change如果 Rails 很容易确定与创建表相反的操作,通常会使用该方法。

于 2013-02-07T08:54:36.263 回答
4

def self.up是类方法(您可以将其发送给类:)Klass.updef up是普通方法(您可以将其发送给对象)。下也一样。

于 2013-02-07T08:51:41.010 回答