В Rails / ActiveRecord 3, как я могу изменить тип первичного ключа по умолчанию для MySQL? - PullRequest
4 голосов
/ 23 июня 2010

В Rails 3 как изменить тип первичного ключа по умолчанию, скажем, BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY

В моем случае меня интересует только MySQL.

Для Rails 2 вы можете увидеть ответ «Как использовать длинные идентификаторы в Rails?» 1

Однако в Rails 3 это приведет к ошибке. Я не уверен, что это потому, что класс давно не используется или код должен идти в том же месте. В active_record/connection_adapters/mysql_adapter.rb видно, что константа NATIVE_DATABASE_TYPES все еще определена.

Как правильно достичь того же эффекта в Rails 3?

Ответы [ 2 ]

1 голос
/ 05 января 2011

Проблема в том, что адаптеры подключения теперь загружаются лениво после запуска всех инициализаторов.

Попробуйте явно запросить модуль кода, который вы используете для обезьяньих патчей:

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, потому что он показался более подходящим.

0 голосов
/ 04 июня 2012

, если вы используете адаптер mysql2, измените приведенный выше код на:

require 'active_record/connection_adapters/mysql2_adapter'
ActiveRecord::ConnectionAdapters::Mysql2Adapter::NATIVE_DATABASE_TYPES[:primary_key] = ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...