Rails 7의 비교 검사기
3142 단어 activerecordvalidatorsrailsruby
ActiveRecord 유효성 검사는 Rails에서 가장 널리 사용되고 잘 알려진 기능입니다. 객체가 데이터베이스에 저장되기 전에 객체의 상태를 검증하는 완전한 검증 프레임워크를 제공합니다.
presence
, uniqueness
, length
등과 같은 다양한 ActiveRecord 유효성 검사기가 있습니다.일부 값이 있는 속성의 유효성을 검사하는 시나리오가 있는 경우 이전 버전의 Rails에서는 동일한 것에 대한 자체 사용자 지정 유효성 검사를 작성해야 했습니다. 그러나 이제 Rails 7에 추가되었습니다
ComparisonValidtor
. 이를 통해 비교 가능한 두 값 간의 비교를 쉽게 확인할 수 있습니다. 이 유효성 검사기는 비교를 위해 옵션[ value
, proc
또는 symbol
]을 제공해야 합니다.다른 속성과 함께
start_date
및 end_date
속성이 있는 모델 약속이 있다고 가정해 보겠습니다.전에
제공된 값 또는 다른 속성에 대한 속성을 검증
end_date
해야 하는 경우 아래와 같이 사용자 정의 검증을 작성해야 했습니다.class Appointment < ApplicationRecord
validates :start_date, presence: true
validates :end_date, presence: true
validate :end_date_is_after_start_date
def end_date_is_after_start_date
if end_date < start_date
errors.add(:end_date, 'can not be before the start
date')
end
end
end
레일 7 포함
사용자 지정 유효성 검사를 사용할 필요가 없으며 ComparisonValidtor가 구출됩니다. 비교를 사용하여 다시 작성해 봅시다.
class Appointment < ApplicationRecord
validates :start_date, presence: true
validates :end_date, presence: true
validates :end_date, comparison: { greater_than: :start_date }
# OR
validates_comparison_of :end_date, greater_than: :start_date
end
ComparisonValidator는 아래 언급된 옵션에 대한 지원을 제공합니다.
greater_than
: 값이 제공된 값보다 커야 함을 지정합니다. 기본 오류 메시지는 "%{value}보다 커야 합니다"입니다. greater_than_or_equal_to
: 값이 제공된 값보다 크거나 같아야 함을 지정합니다. 기본 오류 메시지는 "%{value}보다 크거나 같아야 합니다"입니다. equals_to
: 값이 제공된 값과 같아야 함을 지정합니다. less_than
: 값이 제공된 값보다 작아야 함을 지정합니다. less_than_or_equal_to
: 값이 제공된 값보다 작거나 같아야 함을 나타냅니다. other_than
: 값이 제공된 값과 달라야 함을 지정합니다. 기본 오류 메시지는 "%{value}와 달라야 합니다."입니다여러 비교 옵션을 결합할 수 있습니까?
네 그럼요! 여러 비교 옵션을 결합할 수 있습니다.
end_date가 start_date보다 커야 하고 end_date가 오늘이 아닌지 확인하려고 한다고 가정해 봅시다.
class Appointment < ApplicationRecord
validates :start_date, presence: true
validates :end_date, presence: true
validates_comparison_of :end_date, greater_than:
:start_date, other_than: Date.today
end
ComparisonValidator는 날짜 비교 전용입니까?
절대 아닙니다.
numeric
, date
및 string
값을 ComparisonValidator와 비교할 수 있습니다.class Author < ApplicationRecord
validates_comparison_of :books_count, greater_than: 5
end
ComparisonValidator는 확실히 Rails 7의 훌륭한 추가 기능입니다. 이를 통해 사용자 지정 유효성 검사를 작성하지 않고도 데이터를 비교할 수 있고 데이터를 쉽게 유효성 검사할 수 있습니다.
행복한 코딩!!❤️
Reference
이 문제에 관하여(Rails 7의 비교 검사기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/skg0811/comparison-validator-in-rails-7-3493텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)