我尝试在用户注册时使用相同的验证来验证 4 个字段。我不想用相同的逻辑编写 4 个不同的方法。
我正在验证以下字段 first_name
、last_name
、user_name
和 nickname
。这是我要检查的
def validate_input
if first_name.present? && first_name.start_with?("=", "@", "-", "+")
first_name.prepend('`')
end
end
我怎样才能不用同样的方法重复四次呢?
答案 0 :(得分:0)
我认为您没有验证字段。相反,您正在修改它们。所以,逻辑应该进入回调。
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