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.up
和self.down
。
我可以看到,如果一个是remove_column
而一个是add_column
,这将是有意义的 - 来模拟一个rename_column
,还有一个额外的好处就是能够改变数据类型等等
但我不明白为什么rename
需要两次。这是怎么回事?
答案 0 :(得分:1)
rename_column
用于up
和down
,因为除了名称之外,不需要更改任何列详细信息。 title
和subject
都是相对较短的基于文本的值。如果删除了一个列并添加了一个新列,那么您只需使用相同的数据类型和其他属性。在这种情况下,重命名列更为便利。
仅仅因为您更改了某列并不意味着您必须更改所有内容。