class EmailValidator < ActiveModel::EachValidator
def validate_each (record,attribute,value)
#text length
max = 255
#属性、メッセージ、カウント
record.errors.add(attriibute, :too_long, count:max) if value.length > max
end
end
DockerComposeでrails cで作業するときエラーがあることにきづく。
irb(main):017> user.save
/app/lib/validator/email_validator.rb:6:in `validate_each': undefined local variable or method `attriibute' for #<EmailValidator:0x00007f19f1dd7dd8 @attributes=[:email], @options={:allow_blank=>true}> (NameError)
Did you mean? attribute
attributes
@attributes
attriibuteのスペルがおかしいので指定箇所を直す
class EmailValidator < ActiveModel::EachValidator
def validate_each (record,attribute,value)
#text length
max = 255
#属性、メッセージ、カウント
record.errors.add(attribute, :too_long, count:max) if value.length > max
end
end
同じ個所がおかしいとエラー
irb(main):020> user.save
/app/lib/validator/email_validator.rb:6:in `validate_each': undefined local variable or method `attriibute' for #<EmailValidator:0x00007f19f1dd7dd8 @attributes=[:email], @options={:allow_blank=>true}> (NameError)
Did you mean? attribute
attributes
@attributes
再度立ち上げると意図した挙動になる(バリデーションテスト)
irb(main):006> user.save
TRANSACTION (0.3ms) BEGIN
User Load (7.2ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NOT NULL AND "users"."email" = $1 AND "users"."activated" = $2 LIMIT $3 [["email", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@example.com"], ["activated", true], ["LIMIT", 1]]
TRANSACTION (0.5ms) ROLLBACK
=> false
コメント