Your code looks pretty good to me. Just some minor notes: * `next if survey.nil?` -> `next unless survey` is enough. * The conditional operator `?` is normally used for expressions, not for actions with side-effects. Also, it's a long line, a normal `if`-`else` would look better. * Argument `panel_id` is not used? That said, I'd refactor it a little bit. In my experience, full-fledged conditionals (no inline conditionals) make code easier to read: class VerificationWorker include Sidekiq::Worker def perform(panel_id) members = MembersAPI.members.fetch members.each do |member| if (survey = Survey.find_by(number: member.data_number)) if survey.id != member.data['survey_id'] survey.fail!('survey_id does not match') else survey.recipient_id = survey.recipient_id.presence || member.id if survey.recipient_id == member.id survey.verify! else survey.fail_panel!('recipient_id does not match member id') end end end end end end