Как правильно добавить логическое значение по умолчанию, которое работает в MySQL? - PullRequest
7 голосов
/ 07 марта 2012

Я выполнил свои миграции на своем производственном сервере, и я использую MySQL, я получаю эту ошибку:

Mysql2 :: Ошибка: недопустимое значение по умолчанию для 'admin': ALTER TABLE usersДОБАВИТЬ admin tinyint (1) ПО УМОЛЧАНИЮ 'false'`

моя миграция выглядит следующим образом:

class AddAdminToUsers < ActiveRecord::Migration
  def change
    add_column :users, :admin, :boolean, default: :false
  end
end

Я понимаю, что ошибка в том, что "false" не является правильнымзначение для tinyint, это должно быть 0 в этом случае.Я думал, что default:: false было правильным способом по умолчанию для логического значения в false.

Как это исправить, чтобы MySQL не жаловался на неверное значение?

Ответы [ 2 ]

11 голосов
/ 07 марта 2012

false - это не символ, которому я верю.Попробуйте это

add_column :users, :admin, :boolean, default: false

PS Я не прав.Поэтому вы должны установить default: 0 :(. Или вы можете исправить ActiveRecord::Migration, чтобы он принимал true|false

1 голос
/ 08 марта 2012

Это работает как в PostgreSQL, так и в MySQL:

add_column :users, :admin, :boolean, :default => false

Я не пробовал это с новым синтаксисом хэша Ruby 1.9.2, но я не думаю, что это будет проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...