uma*_*mar 27 ruby activerecord ruby-on-rails
当用户尝试创建一个名称已存在的记录时,我想显示一条错误消息,如:
name "some name" has already been taken
我一直在努力做到:
validates_uniqueness_of :name, :message => "#{name} has already been taken"
Run Code Online (Sandbox Code Playgroud)
但是这会输出表名而不是name属性的值
Aus*_*lor 42
2件事:
%{value}value而不是name,因为在国际化的背景下,你并不真正关心模型的其余部分.所以你的代码应该是:
validates_uniqueness_of :name, :message => '%{value} has already been taken'
Run Code Online (Sandbox Code Playgroud)
Dyl*_*kow 21
看起来您可以传递Proc给消息.执行此操作时,您将获得两个参数:
:activerecord.errors.models.user.attributes.name.taken因此,如果在proc上允许两个参数,则可以使用该项attributes[:value]来获取所使用的名称:
validates_uniqueness_of :name,
:message => Proc.new { |error, attributes|
"#{attributes[:value]} has already been taken."
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16233 次 |
| 最近记录: |