我已经使用attr_encrypted gem加密了表中的一个字段。现在我想查询这个特定的列,并将它与我从表单中检索的值进行比较。我如何才能做到这一点?
attr_encrypted
EDIT:我需要查询一些加密列,例如:搜索encrypted_email、encrypted_name等(在where子句中使用OR条件)
encrypted_email
encrypted_name
where
hjqgdpho1#
attr_encrypted拦截find_by方法,所以你应该能够做到这一点:
find_by
class User < ActiveRecord::Base attr_encrypted :email, :key => 'a secret key' attr_encrypted :password, :key => 'some other secret key' end User.find_by_email_and_password('test@example.com', 'testing')
这被重写为
User.find_by_encrypted_email_and_encrypted_password('ENCRYPTED EMAIL', 'ENCRYPTED PASSWORD')
qrjkbowd2#
class User < ActiveRecord::Base attr_encrypted :email, :key => 'a secret key' end
如果你想写一个查询来检索电子邮件为'abc@xyz.com'的用户,那么你可以这样做
User.where(encrypted_email: User.encrypt_email('abc@xyz.com'))
或
User.scoped_by_email('abc@xyz.com') # works only for dynamic scope methods
2条答案
按热度按时间hjqgdpho1#
attr_encrypted
拦截find_by
方法,所以你应该能够做到这一点:这被重写为
qrjkbowd2#
如果你想写一个查询来检索电子邮件为'abc@xyz.com'的用户,那么你可以这样做
或