Ruby on rails 访问控制器中模型内的帮助程序
我想知道为什么我有一个helper方法,这个方法来自一个模块,我和我的模型混合在一起,当我试图调用模型保护方法时,它在我的控制器中抛出NoMethodError。我的代码目前看起来像这样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|
#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
。。。