ほぼ同じ内容のカスタムバリデーションファイルが2つあります。
1つのファイルにしたいのですが、可能でしょうか?
違いは record.errors.add(attribute, :invalid) unless format =~ value
のメッセージ部分だけです。
使用目的はpasswordカラムを使うときは、passwordバリデーターを
IDカラム使うときは、IDバリデーターを適用する感じです。
ruby
1class IdValidator < ActiveModel::EachValidator 2 def validate_each(record, attribute, value) 3 num = /\A(?=.*?[a-z])(?=.*?\d)[a-z\d]|(?=.*?[A-Z])(?=.*?\d)[A-Z\d]|(?=.*[!@;:])(?=.*?\d)[!@;:\d]+\z/ 4 id = / 5 #{num}| 6 /x 7 format = id 8 record.errors.add(attribute, :invalid) unless format =~ value 9 end 10end
ruby
1class PasswordValidator < ActiveModel::EachValidator 2 def validate_each(record, attribute, value) 3 num = /\A(?=.*?[a-z])(?=.*?\d)[a-z\d]|(?=.*?[A-Z])(?=.*?\d)[A-Z\d]|(?=.*[!@;:])(?=.*?\d)[!@;:\d]+\z/ 4 password = / 5 #{num}| 6 /x 7 format = password 8 record.errors.add(attribute, :password) unless format =~ value 9 end 10end
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。