Это происходит с ActiveRecord и MySQL, которые считают tinyint(1)
(8-разрядное целое число) логическим значением, потому что MySQL не имел никакого логического типа до 5.0 (теперь он имеет BIT).Вы можете полностью отключить это поведение, но я не знаю, как отключить его для каждого поля или для модели, поэтому вы потеряете «логическое» поведение в других полях, если отключите его.К счастью, это, вероятно, не имеет большого значения, потому что 0 по-прежнему будет ложным в большинстве контекстов, а все остальное будет истинным.
Вы можете отключить его, поместив это в config/application.rb
:
ActiveRecord::ConnectionAdapters::Mysql2Adapter.emulate_booleans = false
См. Документы API ActiveRecord .