2014-01-02 2 views
0

Допустим, у меня есть этот sidekiq работник:Rails: Будет ли sidekiq повторять этого работника?

def perform post_id 
    post = Post.find post_id 
    post.do_something 
    end 

Что произойдет, если пост не был найден и исключение был поднят?

Повторите попытку sidekiq?

Что бы лучше дизайн, так что sidekiq бы не попробовать еще раз без использования sidekiq_options: повторить => ложный

Спасибо!

ответ

1

Если вы не хотите, чтобы возникли исключения, вместо этого используйте find_by_id, который возвращает nil, если запись не существует, а не создает исключение. Обязательно проверьте для nil, хотя:

def perform post_id 
    post = Post.find_by_id post_id 
    post.do_something if post 
end 
+0

Я обычно 'спасаю ноль' много находок, чтобы быть в безопасности. –

+0

В Rails 4 код будет 'post = Post.find_by (id: post_id)' – scarver2

Смежные вопросы