Ruby on rails 访问控制器中模型内的帮助程序

Ruby on rails 访问控制器中模型内的帮助程序,ruby-on-rails,ruby,ruby-on-rails-6.1,Ruby On Rails,Ruby,Ruby On Rails 6.1,我想知道为什么我有一个helper方法,这个方法来自一个模块,我和我的模型混合在一起,当我试图调用模型保护方法时,它在我的控制器中抛出NoMethodError。我的代码目前看起来像这样 #models/my_class.rb class MyClass include HelperModule def self.list_payments(payments) new_payments = [] payments.each do |payment|

我想知道为什么我有一个helper方法,这个方法来自一个模块,我和我的模型混合在一起,当我试图调用模型保护方法时,它在我的控制器中抛出NoMethodError。我的代码目前看起来像这样

#models/my_class.rb

class MyClass
  include HelperModule
    
  def self.list_payments(payments)
     new_payments = []
     payments.each do |payment|
        payment = MyClass.new.tap do |p|
           p.quality_check = quality_check(payment)
           p.amount_with_fee = calculate_fees(payment)
        end

        if payment.valid?
          payment.save
          new_payments << payment
        end
     end
     new_payments
  end
end

 #controllers/my_classes_controller

 class MyClassController < ApplicationController
     def index
        response = Faraday.get
        unfiltered_payments = JSON.parse(response.body)["payments"]
        @payments = MyClass.list_payments(unfiltered_payments)
     end
 end
#models/my_class.rb
类MyClass
包含帮助模块
def自助列表_付款(付款)
新付款=[]
付款。每个人都要付款|
付款=MyClass.new.tap do | p|
p、 质量检查=质量检查(付款)
p、 包含费用的金额=计算费用(付款)
结束
付款是否有效?
付款,储蓄

new_payments这是因为
def self.list_payments
是一个类方法,但您正在调用
include HelperModule
,它只影响实例方法的范围


快速修复,只需将
include
替换为
extend

非常感谢Max!可悲的是,不久前我还在读这篇文章。看来我得回去看看了!可以理解。这些东西可能有点让人困惑。仅复制模块的实例方法,但它们是否复制到其他类的实例或类范围取决于您是使用
extend
还是
include
。。。