最近需要自定义一些特殊字段,不想修改 migration 文件。想通过扩展ActiveRecord::Migration的方式实现,添加自定义 column 或者修改默认 column 的创建行为。
ActiveRecord::Migration
不知道最好的办法是什么。
P.S. 之前好像在一个地方看到过关于扩展ActiveRecord::Migration的文章。找了半天没有找到。
在 Migration 里面执行 SQL 不能到达这个目的么?
#1 楼 @huacnlee 可以的。但是因为是想要修改主键策略,所以想用一个统一的方式处理的更优雅一些。
#1 楼 @huacnlee 我找到了一些资料,可以在environment.rb中重写掉ActiveRecord::ConnectionAdapters::SchemaStatements中的native_database_types方法或者NATIVE_DATABASE_TYPES静态变量(传送门 gist),以支持更多自定义数据类型以及重写掉默认的数据类型。
environment.rb
ActiveRecord::ConnectionAdapters::SchemaStatements
native_database_types
NATIVE_DATABASE_TYPES
但我运行rake任务的时候,貌似没有生效。
rake