cyberfly
2/19/2020 - 9:34 AM

Rails do something if column was update from status A to status B

class XrayRetake < ApplicationRecord
  
  after_commit :update_code, if: -> { previous_changes[:status] }
  
  def update_code

        prev_status = previous_changes[:status][0]
        new_status = previous_changes[:status][1]

        if prev_status == 'APPROVAL' && new_status == 'APPROVED'
            self.update_columns(code: generate_retake_code)
        end

  end
  
  def generate_retake_code
      "99#{'%012i' % seq_nextval('retake_xray_seq')}"
  end
  
end