我只是想确定这是否可行:
class AddUpdatedById < ActiveRecord::Migration
def change
add_column :clients, :updated_by_id, :integer
add_column :contacts, :updated_by_id, :integer
add_column :court_agencies, :updated_by_id, :integer
end
end
这样我就可以保存迁移。因为如果我将逐个迁移它们,我认为这将需要更多时间并且使我的迁移陷入困境。那么,您怎么看?
是否有可能或我应该逐一做同样的事情?
答案 0 :(得分:7)
是的,你可以,这将是一个群组迁移。如果你想改变很多桌子,你也可以做这样的事情来编写更少的代码。
def change
tables = [:clients, :contacts, :court_agencies]
tables.each do |table_name|
add_column table_name, :updated_by_id, :integer
end
end
如果您决定回滚此迁移,则会毫无问题地删除列。
答案 1 :(得分:3)
是的,你可以。迁移实际上可以包含无限的命令列表。例如,如果您查询这些ID,则还应在id上添加索引。
这个想法是在同一个迁移中只分组一组引用相同概念的操作,就像在这种情况下一样。
如果您有多项更改,例如创建模型表,新字段和索引,并且这些更改不是同一功能或批处理操作的一部分,而只是创建多个文件。
在这种情况下,目标是添加UpdateById
字段。使用单个迁移是有意义的。
答案 2 :(得分:1)
是的,你可以这样做,但通常你想在相同的迁移文件中保留相关的更改