mysql - 无法使用 Rails 5.0.1 和 MySQL 更新 bool 列

标签 mysql ruby-on-rails activerecord ruby-on-rails-5

我有一个模型Diary,其中有列is_draft( bool 值,null:false)。 我将其设置为枚举范围,例如 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 值?

从真实出发,尝试一下:

Diary.last.update_attributes(is_draft: false)

关于mysql - 无法使用 Rails 5.0.1 和 MySQL 更新 bool 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51962015/

相关文章:

javascript - 在 React 组件中使用 ajax 获取实时更新的数据

ruby-on-rails - 如何从 Ruby on Rails 上的路径发现 Controller 名称和方法?

ruby-on-rails - 其他模型方法中的rails current_model

ruby-on-rails - 序列化我的哈希时,ActiveRecord 将符号键转换为字符串

PHP AJAX Comet 与 MySQL 选择记录

php - 在 PHP 中从 MySQL 表数据创建 CSV 文件

mysql - SQL连接多个表而不返回相同的连接id两次

php - Mysql 不保留来自 Jquery ajax post 的换行符?

ruby-on-rails - react-rails Assets 管道图像路径

mysql - 为什么 MyModel.offset(n).find(20) 在带有 MySQL 的 Rails 3 中这么慢?