在Rails中很难调用类方法有其他可以正常工作的类方法

问题描述

因此,我试图编写一个方法来使用邮件程序类发送csv文件。我认为我已经解决了所有逻辑,而我遇到的问题是NoMethodError。我已经在Order类中定义了该方法(见下文):

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'

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

任何帮助都是值得的。我已经做了一百万次而没有任何问题的事情让我非常沮丧。

解决方法

更改后,Rails通常会重新加载app/config/routes.rb中的任何内容,但是在某些情况下,该类无法正确地重新加载,并且旧版本的缓存版本被卡住了。这通常是由Spring引起的,该{@ 3}试图保持最新状态,但有时会不同步。

通常的解决方法是:

spring stop

如果它给您带来很多麻烦,您也可以禁用它。 Rails的启动时间可能会较慢,但对您来说可能不是问题。