问题描述
|
我一直在集思广益,以实现这一目标的最佳方法,并认为我应该向社区提出一些想法/澄清。
基本上是从单个付款控制器进行的,我希望能够处理用户可能选择的各种付款方式。例如,我的控制器收到带有“ 0”的发帖请求。我想通过逻辑处理Paypal特定操作,然后将返回给URL的URL(返回Paypal)交给控制器。
我正在执行“ 1”来初始化Paypal类,但遇到的问题是无法访问Paypal所需的各种数据(即当前用户信息,请求IP地址,cookie数据,URL帮助器等)。
那么我想也许我可以拥有一个贝宝模块,但是如何以编程方式包括正确的支付模块?似乎我可能滥用了模块概念,因为我会将模块用于特定逻辑,而不是共享逻辑。
因此,如果用户改为选择Google Checkout,则无论采用哪种付款方式,控制器都只需要通用说明
接受参数[:payment_option]
获取付款方式
收到payment_option_response
有什么想法可以做这样的事情吗?过去我曾遇到过类似情况,但始终不确定这是最佳途径。
解决方法
class Payment
def self.handle
raise \'must impliment in subclass\'
end
end
class PaypalPayment < Payment
end
class GooglePayment < Payment
end
class PaymentController < ApplicationController
def show_me_the_money
case params[:payment_option]
when \'paypal\': url = PaypalPayment.handle params
when \'google\': url = GooglePayment.handle params
end
redirect_to url
end
end