def self.up,def up,def self.down,def down是什么意思?

时间:2013-02-07 08:45:30

标签: ruby-on-rails

有人可以解释一下,请问下一件事有什么区别?

  1. def self.up
  2. def up
  3. def self.down
  4. def down

2 个答案:

答案 0 :(得分:11)

self.upup包含执行rake db:migrate时迁移所运行的代码。 self.upup的旧版本。我不确定他们什么时候介绍这个,但直到3.0,他们才使用self.up

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

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

答案 1 :(得分:4)

def self.up是一个类方法(您可以将它发送到类:Klass.up),def up是一种常规方法(您可以将它发送到对象)。同样下来。