在rails中调用类方法时遇到困难.有其他工作良好的类方法



所以我正在尝试编写一个类方法,使用mailer类发送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引起的,它试图保持最新,但有时可能会失去同步。

通常的修复方法是:

spring stop

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

最新更新