# model.rb
validates :employee_id, presence: true, uniqueness: true
当留空时,错误消息显示“雇员不能为空”,而我希望它说“雇员ID不能为空”。
我通过以下方式解决了这个问题:
# model.rb
validates :employee_id, presence: { message: " ID can't be blank" }, uniqueness: true
输出“雇员ID可以为空”。
但是,这不是IMO真正好的解决方案。我想要一些定制整个消息的方法,包括属性前缀。
有没有简单的方法可以做到这一点?
有几种“正确”的方法可以解决此问题,但是您绝对不应该通过验证本身或定义自己的验证方法来做到这一点。
在逐个模型级别上,这由类级别human_attribute_name
方法控制。
如果您希望模型的employee_id
字段是_id
后缀不被截断的特例,则通过覆盖来定义该特例human_attribute_name
:
class MyModel
validates :employee_id, presence: true
def self.human_attribute_name(attr, options = {})
attr == :employee_id ? 'Employee ID' : super
end
end
在更广泛的方面,你可以重新定义human_attribute_name
上ActiveRecord::Base
覆盖处理的所有 _id
属性,但我怀疑你想这样做。通常,Rails删除_id
后缀是一件好事。
第二种(可能更好)的机制是仅依靠本地化。ActiveRecord几乎可以绑定到您的区域设置YAML文件。如果希望您的employee_id
字段变得人性化,Employee ID
而不考虑语言,则需要编辑YAML文件。
# config/locales/en.yml
en:
activerecord:
attributes:
employee_id: "Employee ID"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句