Я использую служебные объекты для абстрактной функции оплаты полосы в свой класс. Я использую этот метод https://gist.github.com/ryanb/4172391, о котором говорил ryan bates.Объекты службы Rails
class Purchase
def initialize(order)
@order = order
end
def create_customer
customer = stipe create customer
if customer
charge_customer(customer)
else
stipe error in creating customer
end
end
def charge_customer(customer)
if charge is sucessfull
update_order(charge details)
else
stripe error in charging card
end
end
def update_order
@order.update(payment attributes)
end
end
Тогда в контроллере порядка я делаю что-то вроде
def create
@order = Order.new(params[:order])
if @order.save
payment = Payment.new(@order)
else
render 'new' with flash message "payment error"
end
end
Мой вопрос, как я получаю сообщения об ошибках ножка («ошибка ножка в создании клиента» и «ошибка полосы в зарядная карта ") для отображения пользователю? Или я могу вызвать объект службы в модели заказа и добавить его для заказа сообщений об ошибках? Например, контроллер
Заказать
@order.save_with_payment
модель Заказать
def save_with_payement
payment = Payment.new(self)
#update order
self.payment_token = payment.token
etc
end
Если я могу сделать это с моделью, как я сделать проверку, которая показывает ошибки нашивки?
Спасибо заранее.
Привет, спасибо за ваш ответ. Единственная проблема в том, что у меня есть много защищенных атрибутов в параметрах [: order], которые будут установлены вручную и подтверждены, например, с помощью product_id, чтобы получить продукт и проверить, равна ли сумма продукта в параметрах [: order] и установите сумму, которая будет взиматься с продукта, найденного с идентификатором продукта, так как любой пользователь может легко обойти проверку количества javascript. Есть ли способ установить защищенные атрибуты из класса оплаты? – Saff
вам придется реорганизовать свой класс, чтобы он работал с таким сервисом. – phoet
Рефакторинг как? – Saff