rails 验证 - 自定义验证

时间:2021-03-11 20:38:41

标签: ruby-on-rails validation

我尝试在用户注册时使用相同的验证来验证 4 个字段。我不想用相同的逻辑编写 4 个不同的方法。

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

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

我怎样才能不用同样的方法重复四次呢?

1 个答案:

答案 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