我正在尝试为唯一性验证提供自定义验证消息。但是,对于错误消息,我需要稍微复杂的行为,所以我将此逻辑放在私有方法(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
模型属性或其他东西动态创建消息,你应该创建自定义验证器,因为消息应该是字符串。