机场有四个字母的ICAO代码。按照惯例,这些总是大写的。我正在创建一个用于接收用户输入的表单,但是此表单需要能够接受混合大小写的用户输入,并防止他们创建模糊。Rails - 强制字段大写并且唯一验证
默认:uniqueness
当然是区分大小写的。我想出了如何在保存之前将用户的输入转换为大写,但问题在于这似乎是后验证,而不是预验证。
例如,如果已经有一个国际民航组织的KLAX
机场,用户可以输入klax
,它将被验证为唯一的,然后转换为大写并存储,导致重复。
这是我现在的模型代码。
class Airport < ActiveRecord::Base
validates :icao, :name, :lat, :lon, :presence => true
validates :icao, :uniqueness => true
before_save :uppercase_icao
def uppercase_icao
icao.upcase!
end
end
或做before_validation代替before_save :) – 2011-02-22 19:54:07
完美,丹尼的更新答案 - before_validation是正是我需要的。 – tkrajcar 2011-02-22 20:06:31