gpt4 book ai didi

ruby-on-rails - 如何将列的值传递给validates的自定义错误信息

转载 作者:行者123 更新时间:2023-12-05 05:24:59 26 4
gpt4 key购买 nike

我有一个包含 2 列的模型,nameanswer

如何将 name 的值传递给模型验证的自定义错误消息。

示例代码:

#app/models/sample_model.rb
Class SampleModel < ActiveRecord::Base
validates :answer,
:presence => {:message => "Error name: #{self.name}"}
end

它显示模型的名称 SampleModel,而不是列 name 的值。

最佳答案

要访问正在验证的属性(列)的值,您需要使用 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 中,您可以自定义消息。它需要三个参数 attributemessageoptions。在上面,我将 :base 作为属性,基本上是为了进一步自定义您的自定义消息。

参见 here有关 validates_each 方法和 here 的更多信息对于事件模型错误类中的“添加”方法。还有 this section Rails 指南上的内容会有所帮助。

关于ruby-on-rails - 如何将列的值传递给validates的自定义错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32857072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com