self.up v self.down (Rails) 中的`rename_column`有什么区别

What is the difference between `rename_column` in self.up v self.down (Rails)

rename_columnself.upself.down有什么区别?

我有一个如下所示的迁移文件:

def self.up
  rename_column :posts, :title, :subject
end

def self.down
  rename_column :posts, :subject, :title
end

到目前为止,我只在迁移文件中看到 def change。不是 self.upself.down.

如果一个是 remove_column,一个是 add_column,我可以看出这有什么意义 - 模拟 rename_column,还有一个好处是能够改变数据类型等

但我不明白为什么 rename 需要两次。这是怎么回事?

rename_columnupdown 中都使用,因为除了名称之外不需要更改任何列详细信息。 titlesubject 都是相对较短的基于文本的值。如果您删除一列并添加一个新列,您只会使用相同的数据类型和其他属性。在这种情况下,重命名列更为方便。

仅仅因为您正在更改列并不意味着您必须更改它的所有内容。