使用帮助程序方法跟踪自定义验证消息



我正在尝试为唯一性验证提供自定义验证消息。但是,对于错误消息,我需要稍微复杂的行为,所以我将此逻辑放在私有方法(error_message_for_email_uniqueness )中。

这是我正在使用的代码

validates_uniqueness_of :email, message: error_message_for_email_uniqueness

这是我收到的错误

/Users/dylandrop/.rvm/gems/ruby-1.9.2-p290/gems/attr_encrypted-1.2.0/lib/attr_encrypted.rb:229:in `method_missing': undefined local variable or method `error_message_for_email_uniqueness' for #<Class:0x00000103684198> (NameError)

我试过使用 message: lambda { error_message_for_email_uniqueness } ,这也不起作用。此外,我尝试将其包装在 Proc 而不是 lambda 中,这不会让我得到任何地方。

我该如何解决这个问题?

您是否将

error_message_for_email_uniqueness定义为类方法?

我做了一个快速测试,这工作正常:

validates_uniqueness_of :email, message: Proc.new { error_message_for_email_uniqueness }
def self.error_message_for_email_uniqueness
  # logic to generate message goes here
end
如果你想根据

模型属性或其他东西动态创建消息,你应该创建自定义验证器,因为消息应该是字符串。

最新更新