以验证,格式访问模型变量

时间:2018-07-24 08:53:20

标签: ruby-on-rails format

我具有以下(简化的)模型结构:

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尝试了一堆其他方法,但似乎无法弄清楚如何将数据传递到那里。

我该怎么做?提前感谢您的反馈和答复。

1 个答案:

答案 0 :(得分:1)

根据docsRails允许传递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