Rails strict validation

Đăng bởi Lưu Đại vào ngày 18-12-2022
Thông thường khi create hay update một object (sử dụng create, update) trong Rails mà param truyền vào không pass validation thì Rails sẽ trả về false và gán lỗi 
object.errors
Nếu như muốn Rails raise exception khi validate fail thì có thể dùng update! create!
Tuy nhiên cũng có thể raise exception với các validate cụ thể và trả về false khi check fail validate các case khác bằng cách sử dụng strict validation.
validates :staff_code, presence: { strict: true }
validates :name, presence: true
Khi validate name blank thì sẽ trả về false tuy nhiên khi staff_code blank thì sẽ raise exception.
Strict còn cho phép chỉ định exception sẽ được raise lên, đặc biệt hữu dụng khi có custom validation mà muốn chạy vào đúng case exception handler cụ thể.
validate :check_staff_code_valid, strict: InvalidStaffCodeFormatException
Sau đó bắt lại lỗi InvalidStaffCodeFormatException trong exception handler để trả về message phù hợp