在Rails 3中,如何将默认主键类型更改为BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
就我而言,我只对MySQL感兴趣。
对于Rails 2,您可以看到“如何在Rails中使用长ID?”1
的答案然而,在Rails 3中,这将引发错误。我不确定是不是因为该类不再使用,或者代码需要在同一个地方。您可以在active_record/connection_adapters/mysql_adapter.rb
中看到仍然定义了NATIVE_DATABASE_TYPES
常量。
在Rails 3中实现相同效果的正确方法是什么?
答案 0 :(得分:1)
问题是连接适配器现在在所有初始化程序运行后懒洋洋地加载。
尝试明确要求您进行猴子修补的代码模块:
require 'active_record/connection_adapters/mysql_adapter'
ActiveRecord::ConnectionAdapters::MysqlAdapter::NATIVE_DATABASE_TYPES[:primary_key] =
"BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY".freeze
我不知道将此添加到config/environment.rb
是否仍然有效。无论如何,我将其添加到config/application.rb
,因为它似乎更合适。
答案 1 :(得分:0)
如果您使用的是mysql2适配器,请将以上代码更改为:
require 'active_record/connection_adapters/mysql2_adapter'
ActiveRecord::ConnectionAdapters::Mysql2Adapter::NATIVE_DATABASE_TYPES[:primary_key] = ....