Хороший вопрос. Всякий раз, когда вы видите переменную экземпляра в rails (начиная с @
), это обычно бит кода представления/контроллера.
@stripe_cards = Stripe::Customer.retreive(self.stripe_customer_id).cards.all
Однако, глядя на конец этого
Stripe::Customer.retreive(self.stripe_customer_id).cards.all
Это может лучше подходить для модели, где вы можете повторно использовать одну и ту же строку, но при этом обеспечиваете безопасность дополнительной обработки ошибок и предсказуемого поведения. Например
# user.rb
def stripe_customer_cards
Stripe::Customer.retreive(self.stripe_customer_id).cards.all
rescue Stripe::InvalidRequestError
false # You could use this to render some information in your views, without breaking your app.
end
Также обратите внимание на использование self
. Обычно это подразумевает использование модели Rails, потому что вызов self
в контроллере на самом деле относится к контроллеру, что делает его почти бесполезным, если вы действительно не знаете, что делаете.
ИЗМЕНИТЬ
Чтобы отобразить сообщение об ошибке, просто напишите вызов для перенаправления или рендеринга с параметром alert
.
if @stripe_cards = current_user.stripe_customer_cards
# Your being paid, sweet!
else
# Render alert info :(
render 'my_view', alert: 'This is an alert'
redirect_to other_path, alert: 'Another alert'
end
Я также хотел бы отметить, что вы не должны обрабатывать ошибки только потому, что можете. Не обрабатывайте ошибки, которых не ожидаете. Если вы обрабатываете ошибки, которых не ожидаете,
- Запутать пользователей
- Затруднить исправление ошибок в коде
- Преувеличивать время до обнаружения ошибки
person
OneChillDude
schedule
04.12.2013