我具有以下(简化的)模型结构:
class Customer < ApplicationRecord
validates :full_name, format: { without: /[^a-zA-Z .,']+/, message: "cannot contain " + /[^a-zA-Z .,']+/.match(self.full_name).to_s}
end
我想用正则表达式验证用户提供的full_name,如果验证失败,我想显示full_name的哪一部分未通过正则表达式验证。
但是,这将返回“ undefined method full_name”,我为self.full_name尝试了一堆其他方法,但似乎无法弄清楚如何将数据传递到那里。
我该怎么做?提前感谢您的反馈和答复。
答案 0 :(得分:1)
根据docs,Rails
允许传递Proc
消息。因此,根据您的情况,可以自定义消息:
class Customer < ApplicationRecord
validates :full_name,
format: {
without: /[^a-zA-Z .,']+/,
message: ->(object, data) do
"cannot contain " + /[^a-zA-Z .,']+/.match(object.full_name).to_s
end
}
end