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

时间:2016-07-27 20:14:58

标签: ruby-on-rails migration rails-migrations

rename_column v self.up self.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需要两次。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

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

仅仅因为您更改了某列并不意味着您必须更改所有内容。