ROR中模型的枚举属性的值有时为nil

时间:2018-07-11 16:41:35

标签: ruby-on-rails ruby activerecord enums

我有一个模特

class Item < ActiveRecord::Base
  enum status: { requested: 0, received: 1, sent: 3 }
  validates_presence_of :status
end

def self.save_value(item_id, value
  item = Item.find(item_id)
  item.value = value
  item.save!
end

有时(<1%的时间),我在Validation failed: status can't be blank上收到类似item.save!的错误

需要注意的地方

  1. 状态的默认值为0,即永远不会为空。
  2. 数据库状态永远不会为空(我已经检查了所有条目)。

我注意到是什么问题,这是枚举问题吗?

  • 操作系统:Ubuntu
  • WebServer:Puma [2个工作人员和12个线程]

1 个答案:

答案 0 :(得分:0)

我现在也面临着类似的问题,因为我分析了一个原因可能是如果模型中的枚举哈希值已更新(即,删除了一些键值)并且DB中已经有一些带有这些枚举值的记录,那么设置为零。

在这种情况下,我的Model.where(status: nil).countModel.where(status: nil)也没有在Rails控制台中获取这些记录。