我在付款文件夹中有一个名为 gateway_controller.rb
的控制器class Payment::GatewayController < PaymentController
include Payment::GatewayHelper::Handler
def set_handler
@handler = StandardGatewayInterface.get_handler("test")
end
end
我的帮助文件在 helpers / payment / gateway_helper / handler.rb 中 看起来像
module Payment::GatewayHelper::Handler
class StandardGatewayInterface
def self.get_handler(payment_method)
puts self.descendants
end
# Get a list of subclasses.
def self.descendants
ObjectSpace.each_object(Class).select { |cls| cls < self }
end
end
end
并且 /helpers/payment/test_fort.rb 中还有另一个文件,其中有一个继承自StandardGatewayInterface
的类。
require_relative './gateway_helper/handler'
class TestFort < StandardGatewayInterface
include Payment::GatewayHelper::Handler
def build_redirect_url(user_id, product, success_url)
puts "===in==="
end
end
当我调用StandardGatewayInterface.get_handler("test")
时,它会进入帮助方法,我调用self.descendants
,因为它继承自TestFort
,所以必须返回StandardGatewayInterface
。但我得到的是一个空数组。
我将如何使这项工作?