难以在 rails 中调用 class 方法。还有其他 class 方法可以正常工作

Difficulty calling a class method in rails. Have other class methods that work fine

所以我正在尝试编写一个 class 方法来使用邮件 class 发送 csv 文件。我想我已经解决了所有逻辑问题,我遇到的问题是 NoMethodError。我在我的订单 class 中定义了方法(见下文):

class Order < ApplicationRecord

def self.to_csv
    attributes = %w{ id customer_name, customer_email, street_address, city, state, zip_code, number_books }
    orders = Order.where(Date.today.all_day)

    CSV.generate(headers: true) do |csv|
      csv << attributes

      orders.each do |order|
        csv << attributes.map { |attr| order.send(attr) }
      end
    end
  end
end

我只是想在控制台中调用这个方法,看看它给我什么样的输出。

我收到以下错误:

NoMethodError: undefined method `to_csv' for #<Class:0x00007fb7ef8a7560>
Did you mean?  to_s
from /Users/mymac/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-6.0.3.2/lib/active_record/dynamic_matchers.rb:22:in `method_missing'

我也尝试编写任何 class 方法来做一些简单的事情,例如在控制台打印一个词,但我得到了同样的错误。我已经重新启动了我的 rails 服务器,但我认为我什至不必这样做??

感谢任何帮助。我已经做了一百万次都没有问题的事情出现问题是非常令人沮丧的。

Rails 通常会在 app/config/routes.rb 中重新加载任何内容,但在某些情况下 class 无法正确重新加载和缓存旧版本的版本卡住了。这通常是由 Spring 引起的,它试图保持 up-to-date 但有时可能会不同步。

通常的修复是:

spring stop

如果它给您带来很多麻烦,您也可以禁用它。 Rails start-up 时间可能会慢一些,但这对您来说可能不是问题。