You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails控制台报错:Sms类不存在each方法(NoMethodError)

错误原因分析

核心问题

报错 undefined method 'each' for Sms:Class (NoMethodError) 的直接原因是:你直接对 Sms 类本身调用了 each 方法,但 Sms 类并没有定义这个类方法。

详细解释

  • 在 Ruby/Rails 场景中,each 是用于遍历可枚举对象(比如数组、集合、ActiveRecord::Relation 实例)的方法,而 Sms 是一个模型类,本身并非可枚举的集合对象。
  • 你的代码逻辑有误——你真正需要遍历的是该模型对应的所有数据库记录,而非 Sms 类本身。

修正方案

把 Sms.each 替换为 Sms.all.each,先通过 Sms.all 获取所有 Sms 记录的可枚举集合(ActiveRecord::Relation 对象),再调用 each 遍历:

Sms.all.each do |sms|
  sms.time_stamp = Time.at(sms.time_stamp_long / 1000)
  sms.save
end

如果数据量较大,建议用 find_each 分批加载记录,避免一次性占用过多内存:

Sms.find_each do |sms|
  sms.time_stamp = Time.at(sms.time_stamp_long / 1000)
  sms.save
end

内容的提问来源于stack exchange,提问作者bad-reputation

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:46:03