我有以下迁移。有没有办法在一个变化中运行这些变化而不是3?
• Expecting one fewer argument to ‘String’
Expected kind ‘* -> Constraint’, but ‘String’ has kind ‘*’
• In the type signature:
test' :: (String a) => a -> a
答案 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迁移中非常典型。