在检查字符串是否唯一时,如何忽略空格?例如,如果我的模型只存储一个字符串并且条目是“Hello World”,则应将“HelloWorld”标记为非唯一。有没有办法可以将此子句附加到validates: uniqueness: ...
验证器,或者我是否需要编写自己的方法?
答案 0 :(得分:3)
您必须编写自己的方法:
before_save :check_name_uniqueness
def check_name_uniqueness
name = self.name.presence
if name
name = name.downcase.gsub(" ", "").strip.squish
if self.class.exists?(name: name)
self.errors.add(:base, "already existing name")
return false
else
return true
end
else
self.errors.add(:name, "cant be blank")
return false
end
end
答案 1 :(得分:0)
您还可以尝试添加其他列作为唯一列,并设置验证,如:
before_validation :set_unique_name
validates :unique_name, :uniqueness => {:message => "name is already taken"}
def set_unique_name
self.unique_name = self.name.downcase.gsub(" ", "").strip
end