【问题标题】:Cannot update boolean column with Rails 5.0.1 and MySQL无法使用 Rails 5.0.1 和 MySQL 更新布尔列
【发布时间】:2018-08-22 07:43:06
【问题描述】:

我有一个模型Diary,它有列is_draft(布尔值,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?

【问题讨论】:

  • 您使用的是nilify_blanks 还是类似的?

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


【解决方案1】:

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

真的,试试吧:

Diary.last.update_attributes(is_draft: false)

【讨论】:

  • Diary.last.update_attributes(is_draft: false) 创建相同的查询,但失败。
  • @Taichi,您是尝试从假值还是真值执行命令? (在命令行中检查:Diary.last.is_draft)
  • @Taichi 你能告诉我你是如何在你的模型上创建字段 is_draft
  • 试试这个: enum is_draft: { draft: 0, published: 1 } Diary.last.update! is_draft: 0
猜你喜欢
  • 2014-09-10
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多