맞춤 유효성 검사기 편리했습니다 >_<
4096 단어 Rails5루비validatorValidation
커스텀 밸리데이터란 밸리데이션을 취향에 커스터마이즈 할 수 버리는 것.
자신의 규칙을 만들 수 있습니다!
비망록으로서 일련의 흐름을 써 갑니다.
등록 폼에서 save시에 이 validator를 발동시킵니다.
유저가 은행 코드를 입력해, 그 코드가 Bank 테이블상에 존재하지 않으면 (그 코드에 일치하는 은행은 존재하지 않는다고 하는 내용의) 경고를 표시시키는 것 같은 이미지입니다.
new.html.slim
= form_for @bank_account do |f|
= f.text_field :bank_code #銀行コード
= f.text_field :account_num #口座番号 物足りなかったので書いただけで特にカスタムバリデーターとは関係ないです
= f.submit
그런 다음 사용자 정의 유효성 검사기의 본문을 만들고 정의합니다.
app/validators/bank_validator.rb라는 파일 만들기
app/validators/bank_validator.rb
class BankValidator < ActiveModel::EachValidator #classはファイル名で
def validate_each(record, attribute, value) #ここの引数たちはおまじないだと思って問題ない
unless Bank.find_by(code: value) # 銀行のテーブルを参照しその中のcodeの値と受け取ったvalueを比較する => falseならバリデーター発動!!!!!
record.errors[attribute] << (options[:message] || "は正しくありません") # ここも意味がわからなかったらコピペで全然おkです
end
end
end
참고로 인수들에게 무엇이 들어 있는지 확인해 보면
p record
=> BankAccount id: nil, bank_code: "aaaaa", created_at: nil, updated_at: nil>
p attribute
=> :bank_code
p value
=> "aaaaa"
이런 식으로 들어 있습니다!
마지막으로 모델 내 설정
presence: true는 알고 있다고 생각하지만, 뒤의 bank: true가 중요합니다.
bank_account.rb
class BankAccount < ApplicationRecord
validates :bank_code, presence: true, bank: true #ここの最後の部分でカスタムバリデーターを使いますよという合図
end
bank_code를 aaaaa로 제출한 결과
할 수 있습니다!
참고 rails 가이드-validator
Reference
이 문제에 관하여(맞춤 유효성 검사기 편리했습니다 >_<), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nakki/items/77f4bf66c1569e6b50f9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)