好的,所以我有一個關於如何最好地解決rails問題的問題。我將展示我是如何解決這個問題的,但是真的很希望得到關於這種方法的一些反饋意見,以及是否有更好的方法。解決多表繼承問題的最佳途徑
首先,我有一個基本的電子商務應用程序,包括客戶,付款方式和付款。
現在支付方式可以有幾種不同的類型,EG'Stripe,Braintree,Paypal'。這些都是付款方式,但他們有非常不同的邏輯來處理他們的工作。
理想情況下,我希望能夠撥打customer.payment_methods
並收到付款方式的關係。我還希望能夠撥打customer.stripe_payment_methods
,並獲得Stripe方法。
我最初想到使用和STI模型,但這似乎效率低下,因爲每種付款方式有不同的列它依賴。
在表格中存儲類型字段似乎很浪費。
以下是相關車型
class PaymentMethod
scope :stripe, -> {where(type: 'PaymentMethod::Stripe')}
scope :paypal, -> {where(type: 'PaymentMethod::Paypal')}
# Lists available payment types
def self.available_types
PaymentMethod.subclasses.map { |d| [d::NAME, d.to_s] }
end
end
class PaymentMethod::Stripe < PaymentMethod
#performs Stripe specific methods
end
class PaymentMethod::Paypal < PaymentMethod
#performs Paypal specific actions.
end
這些都使用payment_methods
表。這是按照我的意圖運作的,但感覺馬虎。
有沒有更好的方法來做到這一點?