ruby - 在 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引起的,它试图保持最新但有时可能会不同步。
通常的解决方法是:
spring stop
如果它给您带来很多麻烦,您也可以禁用它。Rails 的启动时间可能会慢一些,但这对您来说可能不是问题。
推荐阅读
- angular - Angular MatSort:将默认升序方法更改为忽略 0
- git - 通过 Git 完全控制以 Github 私有 repo 为主的部署
- java - 如何在 Flutter 中运行函数并获取值并将其添加到文本中
- istio - 带有 Istio 服务网格和 AKS 错误的 ASP.NET WebAPI
- android - 填充可用空间 复合组件约束布局
- laravel - 如何解决数组到字符串的转换错误 Laravel
- android - Android SMS Verification API 结果码始终为 0
- python - 在python中是否存在需要全局关键字的情况?
- python - 找到差异。groupby 在 pandas 中的最大值和最小值?
- c - 使用 bigarray 的 Ocaml/C 互操作:'未定义符号:caml_ba_alloc'