Мне передали проект, над которым работал другой разработчик, не оставив никакой документации позади. Код извлекает некоторые покупки с торгового сайта, ищет цену и уведомляет пользователя.StandardError перенаправить на страницу
Приложение может столкнуться с ошибками, такими как «результаты не найдены», а затем я поднимаю стандартную ошибку.
Я хочу перенаправить пользователя на страницу с ошибкой и сообщить об этом, но я не могу этого сделать, потому что это не контроллер, поэтому опция redirect_to
не работает.
услуги/purchase_checker.rb называется один раз в час:
def call
user.transaction do
store_purchase
if better_purchase?
update_purchase
end
end
rescue MyError=> e
store_error(e)
end
def store_error(error)
user.check_errors.create!(error_type: error.class.name, message: error.message)
end
услуги/my_error.rb:
class MyError< StandardError
def initialize(error_type, error_message)
super(error_message)
@error_type = error_type
end
attr_reader :error_type
end
услуги/purchase_fetcher.rb:
def parse_result_page
raise purchase_form_page.error if purchase_form_page.error.present?
offer = purchase_page.map{|proposal_section|
propose(proposal_section, purchase) }
.min_by(&:price)
offer or raise MyError.new("No results", "No results could be found")
end
Вы можете разместить действие контроллера и где PurchaseChecker # вызов будет вызван? –
это вызвано activejob – MaxDBN
Что вы после неясно: если задание выполняется каждый час, где в цикле запроса/ответа вы предлагаете перенаправить пользователя? –