我是Ruby-on-Rails的新手4.我创建了一个自定义验证器,但无法为数组赋值。它显示错误
未定义的方法<<' for nil:NilClass
。
它突出显示@msg << 1
例如,我的模型就像
class User < ActiveRecord::Base
has_secure_password
validates :email,:email_format => true, :on => :create
validates :password, password_format:{with: "upercase"}
end
我的自定义验证器
class PasswordFormatValidator < ActiveModel::EachValidator
#def initilize(options)-Fixed
def initialize(options)
@msg=[]
@password1 = options[:attributes=>[:password]]
@val=options.inspect
super
end
def validate_each(record, attribute, value)
record.errors[attribute] << @val
unless (value.nil? || value.empty?)
@msg << 1
#record.errors[attribute] << "testing"
end
end
end
@val输出
{:attributes=>[:password], :complexity=>3, :length=>6, :class=>User(id: integer, email: string, password_digest: string, created_at: datetime, updated_at: datetime)}
答案 0 :(得分:0)
您的构造函数名称中有拼写错误,它应该是initialize
而不是initilize
。这就是你的@msg
变量未定义的原因 - 你的构造函数从未被调用过!
度过愉快的一天。