【问题标题】:undefined method `delete_if' for String on ActiveRecord::Base saving with Device gem使用设备 gem 保存 ActiveRecord::Base 上的字符串的未定义方法“delete_if”
【发布时间】:2021-12-15 03:26:32
【问题描述】:

我有这样的代码:

# User - typical class of ActiveRecord::Base 
user1 = User.first
user2 = User.last

user2.save
# return true

user1.save
   (1.2ms)  BEGIN
   (1.4ms)  ROLLBACK
NoMethodError: undefined method `delete_if' for #<String:0x000000073a9790>

user1.errors.count
# 0 errors returned!

我无法在本地重现此错误,只能在服务器上。

它是什么?

如何获得有关这个神奇错误的更多信息并修复它?

添加: 似乎与设计 gem 有问题,因为这种解决方法可能:

user1.tokens = nil
user.save
# return true

【问题讨论】:

  • 是否返回了堆栈跟踪或只是错误消息?如果没有堆栈跟踪,我会在整个代码库中搜索字符串 delete_if。这应该会引导您找到引发错误的位置以及引发错误的原因。
  • 听起来你有一个字符串,你应该有一个哈希或数组。是其中一位用户的tokens 字段吗?

标签: ruby-on-rails ruby activerecord


【解决方案1】:

您是否尝试过使用“保存!”而是“保存”?它将在 AR 提交时澄清错误。

尝试比较两个对象,看看 user1 和 user2 记录有什么不同。

如果这似乎是一个设计问题,您可以解压缩 gem 并搜索“delete_if”以进行调试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 2015-01-29
    相关资源
    最近更新 更多