From 23b0885f4baed3148f3cfd7971af00faf8121d8a Mon Sep 17 00:00:00 2001 From: Pau Perez Date: Thu, 11 Feb 2021 10:55:45 +0100 Subject: [PATCH] Turn ivars into private attr_readers This makes them more changeable and robust. Ruby will raise NoMethodError on typos while it'll silently create a new ivar without us noticing. Also, in my experience, a reader method gives more room to future refactorings and eases testing because methods are easier to stub. --- app/services/process_payment_intent.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/services/process_payment_intent.rb b/app/services/process_payment_intent.rb index 28b7636868..4f2aeec7df 100644 --- a/app/services/process_payment_intent.rb +++ b/app/services/process_payment_intent.rb @@ -10,23 +10,23 @@ class ProcessPaymentIntent def call! return unless valid? - @last_payment.update_attribute(:cvv_response_message, nil) - @last_payment.complete! + last_payment.update_attribute(:cvv_response_message, nil) + last_payment.complete! end private - attr_reader :order + attr_reader :order, :payment_intent, :last_payment def valid? order.present? && valid_intent_string? && matches_last_payment? end def valid_intent_string? - @payment_intent&.starts_with?("pi_") + payment_intent&.starts_with?("pi_") end def matches_last_payment? - @last_payment&.state == "pending" && @last_payment&.response_code == @payment_intent + last_payment&.state == "pending" && last_payment&.response_code == payment_intent end end