我想知道为什么当我尝试调用该模型受保护的方法时,我与我的模型混合在一起的模块中有一个辅助方法在我的控制器中抛出 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
quality_check
并且calculate_fees
都在我的帮助模块中,但是在我调用时在控制器中,MyClass.list_payments(payments)
我得到了NoMethodError
这两种方法。我可以通过在我的控制器中包含助手并将此函数用作我的控制器中的私有函数来使其工作,但我试图遵循胖模型/瘦控制器约定。我在这里遗漏了什么还是可以将助手放在控制器中并将此功能移至控制器?使用ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin20]
, 和Rails 6.1.0