rails自定义验证



我正在尝试验证4个字段,它们在注册时对用户模型进行相同的验证。我不想用相同的逻辑编写4种不同的方法。

我正在验证以下字段first_namelast_nameuser_namenickname。这就是我正在检查的

def validate_input 
if first_name.present? && first_name.start_with?("=", "@", "-", "+")
first_name.prepend('`')
end
end

我怎么能在不必用同样的方法重复4次的情况下使用这种方法呢?

我认为您没有验证字段。相反,您正在修改它们。因此,逻辑应该进入回调。

before_save :sanitize_the_names
def sanitize_the_names
[:first_name, :last_name, :user_name, :nickname].each do |field|
self.public_send(field).prepend('`') if field_invalid?
end
end
def field_invalid?
self.public_send(field).present? && self.public_send(field).start_with?('=', '@', '-', '+')
end

最新更新