Rails 8.1.0은 모델 유효성 검사 및 콜백 관리를 간소화하는 except_on 옵션을 도입했습니다. 이 옵션은 특정 컨텍스트에서 검증이나 콜백이 실행되지 않도록 명시적으로 지정할 수 있습니다.
기존 조건부 검증의 한계
on: 옵션:on: [:create]처럼 특정 컨텍스트에서만 검증을 실행할 수 있었으나, 특정 컨텍스트에서 제외하는 직접적인 방법은 없었습니다.```rubyclass Client < ApplicationRecord validates :name, presence: true, on: [:create]end
생성 시 유효성 검사* **`if 조건문`**: `if: :new_record?`와 같은 조건문을 사용했으나, 이는 코드 복잡성을 증가시켰습니다.rubyclass Client < ApplicationRecord validates :name, presence: true, if: :new_record?end
새 레코드일 때만 검증```* save(validate: false): 수동 검증 건너뛰기는 데이터 무결성 위험으로 권장되지 않았습니다.
except_on 옵션의 활용except_on 옵션은 지정된 컨텍스트에서 검증 또는 콜백을 건너뛰도록 명확하게 정의합니다.
검증에 적용: 특정 작업(예:update) 시 검증을 건너뛰도록 설정합니다.```rubyclass Client < ApplicationRecord validates :name, presence: true, except_on: :updateend