UTF-8로 4바이트 이상의 문자를 결정하는 커스텀 밸리데이터 만들기
4601 단어 루비RailsValidation
소개
DB가 UTF-8의 4바이트 이상의 문자를 지원하지 않았기 때문에 응용 프로그램 측에서 지원됩니다
환경
루비 2.5.1
Rails 5.0.6
맞춤 유효성 검사기 만들기
이번, 개별의 속성을 검증하고 싶었으므로,
ActiveModel::EachValidator
를 이용합니다.Active Record 검증 | Rails 가이드
class Lt4bytesValidator < ActiveModel::EachValidator
# UTF-8で4バイト以上の文字かを判定する
def validate_each(record, attribute, value)
return if value.blank?
unavailable_chars = value.scan(/[^\u0000-\uFFFF]/)
record.errors.add(attribute, :unavailable, chars: unavailable_chars.uniq.join(', ')) if unavailable_chars.present?
end
end
locale도 제대로 설정합시다
ja:
errors:
messages:
unavailable: 'に使用できない文字(%{chars})が含まれています。'
모델로 캡처
이번에 만든
Lt4bytesValidator
를 사용하려면 lt4bytes
옵션을 전달하면 OK입니다 class Article < ApplicationRecord
validates :content, lt4bytes: true
...
거동 점검
rails console을 사용해보십시오.
article = Article.new
article.content = '🤓'
article.validate
article.errors[:content]
=> ["に使用できない文字(🤓)が含まれています。"]
이상입니다.
그럼 ~
참고
Reference
이 문제에 관하여(UTF-8로 4바이트 이상의 문자를 결정하는 커스텀 밸리데이터 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/paranishian/items/85f5fc86874eb9726144텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)