难以在 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 时间可能会慢一些,但这对您来说可能不是问题。
所以我正在尝试编写一个 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 时间可能会慢一些,但这对您来说可能不是问题。