我有一个包含2列的模型,name
和answer
如何将name
的值传递给模型验证的自定义错误消息。
示例代码:
#app/models/sample_model.rb
Class SampleModel < ActiveRecord::Base
validates :answer,
:presence => {:message => "Error name: #{self.name}"}
end
而不是列name
的值,它显示模型的名称 SampleModel 。
答案 0 :(得分:1)
要访问要验证的属性(列)的值,您需要使用ActiveModel::Validations
类。该类有一个validates_each
方法,可用于访问正在验证的记录的值。
#app/models/sample_model.rb
class SampleModel < ActiveRecord::Base
include ActiveModel::Validations
attr_accessor :sample_attribute
validates_each :sample_attribute allow_blank: true do |record, attr, value|
record.errors.add :base, 'Error name: #{value}' if value.nil?
end
end
在record.errors.add
中,您可以自定义消息。它需要三个参数attribute
,message
和options
。在上面,我为该属性添加了:base
,基本上可以自定义自定义消息。
有关validates_each方法的详细信息,请参阅here;有关Active Model Errors类中的'add'方法,请参阅here。 Rails指南中的this section也会有所帮助。