0

在 gem 'attr_encrypted' 的帮助下,我在存储到数据库之前加密了用户的所有私人数据。例如,我有 'email_addresses' 表,其中包含 'encrypted_email' 列。当我调用 object.email 或通过电子邮件搜索时,此 gem 会解密数据。但是我在验证这个专栏时遇到了问题。

我对此表和其他表进行了以下验证:

validates_length_of :email, :within => 3..100
validates_numericality_of :post_code

我应该在验证之前以某种方式解密数据,但我不知道如何在内置 Rails 工具的帮助下做到这一点。我不想为此发明自定义验证。请指教。

4

1 回答 1

0

不需要在 rails 端运行 db 查询的验证,因此您可以将方法而不是列传递给验证方法

validates :decrypted_email, length: { within: 3..100 }

def decrypted_email
  # decrypt email here
end
于 2014-08-07T09:37:27.367 回答