无法使用 Rails 5.0.1 和 MySQL 更新布尔列



我有一个模型Diary,它有列is_draft(布尔值,空:假(。 我像is_draft: { draft: true, published: false }一样设置枚举范围。

当我在 rails 控制台中执行此操作时,

Diary.last.update!(is_draft: false)

它创建如下查询,但失败:

UPDATE `diaries` SET `is_draft` = NULL, `updated_at` = '2018-08-22 16:39:17' WHERE `diaries`.`id` = 66
ActiveRecord::StatementInvalid: Mysql2::Error: Column 'is_draft' cannot be null

另一方面,这成功了。

Diary.last.update!(is_draft: true)

如何将其更新为 false?

在您的测试中,您正在尝试更新false值或true值?

从 true 开始,尝试:

Diary.last.update_attributes(is_draft: false)

最新更新