Обработка исключений в ruby ​​на рельсах - PullRequest
0 голосов
/ 26 октября 2018

Я вызвал метод @txt.watch внутри модели от worker, а внутри watch() есть массив parameters(parameters = self.parameters).Каждый параметр имеет уникальный ссылочный идентификатор.Я хочу спасти каждую ошибку исключения для каждого параметра изнутри работника.

 class TextWorker
    def perform(id)
      @txt = WriteTxt.find(id)
      begin
        @txt.watch
        total_complete_watch = if @txt.job_type == 'movie'
                                @txt.total_count
                              else
                                @txt.tracks.where(status:'complete').size
                              end
        @txt.completed = total_completed_games
        @txt.complete = (total_complete_games == @txt.total_count)
        @txt.completed_at = Time.zone.now if @txt.complete
        @txt.zipper if @txt.complete
        @txt.save
        FileUtils.rm_rf @txt.base_dir if @txt.complete
      rescue StandardError => e
        #How to find errors for each reference_id here
      raise e
      end
    end
  end

Есть ли способ сделать.Спасибо тебе большое.

1 Ответ

0 голосов
/ 26 октября 2018

Я предполагаю self.parameters в вашем экземпляре класса Model.В этом случае выполните следующие действия, и вы можете ссылаться на них.

begin
  @txt.watch
rescue StandardError
  p @parameters  # => self.parameters in the Model context
  raise
end

Примечание :

Как правило, рекомендуется ограничить сферу действияспасение как можно более узким.Не включайте утверждения, которые не должны вызывать исключения в вашем основном предложении (например, @txt.save и FileUtils.rm_rf в вашем случае).Кроме того, гораздо лучше ограничить класс исключения;например, спасение Encoding::CompatibilityError вместо EncodingError или EncodingError вместо StandardError и т. д.Или, что еще лучше, определите свой собственный класс исключения и сознательно повысите его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...