在我的en.yml中我有这个:
en:
errors:
format: "%{message}"
messages:
blank: "%{attribute} can't be blank"
invalid: "%{attribute} is invalid"
too_short: "%{attribute} is too short"
too_long: "%{attribute} is too long"
wrong_length: "%{attribute} is the wrong length"
taken: "%{attribute}, {value}, is already taken"
到目前为止,这是我的用户模型:
validates_presence_of :username
validates_uniqueness_of :username
validates_length_of :username, :within => 4..15
validates_format_of :username, :with => /^\w+$/i
validates_presence_of :password
validates_length_of :password, :within => 6..20
当我测试随机数据时,所有错误消息都很有效,除了validates_uniqueness_of,它返回默认的'已经被采取'
非常感谢你。
答案 0 :(得分:1)
不应该是
taken: "%{attribute}, %{value}, is already taken"
有百分号值吗?
我不知道您可以访问value
,但这是有道理的,否则可能是username
。
我看到taken
是正确的密钥,但我仍然会在没有{value}
的情况下尝试查看它是否有效。
在最后或临时修复时,我认为您可以在模型验证中传递消息,这样的事情应该有效:
validates_uniqueness_of :username, :mesage => "#{self.username} is already taken"
但当然你失去了很多好处。