我正在尝试捕获抛出唯一性错误的值(或者就此而言,任何其他类型的内置验证)以在:message
选项中显示它。这是我尝试过的(不起作用)
# inside the model
validate_uniqueness_of :name, :message => "#{name} has already been taken" # also tried using #{:name}
我可以使用自定义验证,但这超过了使用已集成到AR中的内容的重点。有什么想法吗?感谢。
答案 0 :(得分:1)
尝试这种插值技术:
validate_uniqueness_of :name, :message => "%{value} has already been taken"
Active Record Validations and Callbacks的RailsGuide示例显示了在自定义错误消息中插入%{value}
的示例:
:message => "%{value} is not a valid size"
我查看了validates_each文档,可以看到validate块传递了三个属性:|record, attr, value|
。可以使用%{model}
,%{attribute}
和%{value}
访问这三个。
虽然这是有限的,因为它只允许您访问三个属性,幸好这就是您所需要的。
答案 1 :(得分:0)
尝试使用self.name
validates_uniqueness_of :name, :message => "#{self.name} has already been taken" # also tried using #{:name}
同样 validate_uniqueness_of 错误应该是 validates_uniqueness_of
如果这不起作用,请使用验证方法和注释行validates_uniqueness_of
def validate
name= User.find_by_name(self.name) #Assuming User is your Model Name
unless name.blank?
self.errors.add :base, "#{self.name} has already been taken"
end
end