Я написал приложение Rails, которое использует устаревшую базу данных MySQL. Одна таблица содержит это поле
CREATE TABLE `articles` (
`active` tinyint(3) unsigned NOT NULL DEFAULT '0',
);
Я исправил схему с помощью
t.boolean "active", :default => false
Но рельсы не распознают это поле как логическое.
[1] pry(main)> Article.new.active.class
=> Fixnum
Это создаст проблему при проверке, потому что у меня есть этот валидатор в моем классе.
class Article < ActiveRecord::Base
validates_inclusion_of :active, :in => [true, false]
end
Когда я присваиваю логические значения этому полю, они преобразуются в FixNum, и проверка завершается с ошибкой с сообщением "1 is not included in the list"
Если я создаю новое приложение с той же моделью, сгенерированный код sql
CREATE TABLE `posts` (
`active` tinyint(1) DEFAULT NULL,
)
И все работает нормально:
[1] pry(main)> Article.new.active.class
=> FalseClass
Есть ли способ сделать мой устаревший столбец распознаваемым как логический (возможно, без запуска миграции)?