通过一次迁移更改来更改多个列

时间:2016-09-20 18:12:29

标签: ruby-on-rails activerecord

我有以下迁移。有没有办法在一个变化中运行这些变化而不是3?

• Expecting one fewer argument to ‘String’
  Expected kind ‘* -> Constraint’, but ‘String’ has kind ‘*’
• In the type signature:
    test' :: (String a) => a -> a

1 个答案:

答案 0 :(得分:7)

简短的回答是否定的。 change_column方法配置为获取表名,列名和选项哈希的参数。 change_column的源代码可在此处找到:https://github.com/rails/rails/blob/0fe76197d2622674e1796a9a000995a7a1f6622b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb

change_column方法中唯一的一行是: execute("ALTER TABLE #{quote_table_name(table_name)} #{change_column_sql(table_name, column_name, type, options)}")

对作为第一个参数传递的表名执行ALTER脚本。您不能将表/列数组作为参数传递,因此您必须一次执行一个。这种范例在Rails迁移中非常典型。