用户模型中的电子邮件字段使用attr_encrypted加密。当我使用devise和facebook omniauth创建新用户时,它实际上会保存在DB中。此外,我可以使用User.last.email #=> foo@foo.com
检索该数据。
但是当我使用User.find_by_email("foo@foo.com")
或User.where(email: "foo@foo.com")
时,它会返回nil或[]。
user.rb
class User < ActiveRecord::Base
attr_encrypted :email, key: Settings.encryption.key
end
答案 0 :(得分:1)
如果您使用的是attr_encrypted
gem,我认为email
是虚拟字段,并且实际上作为users
字段保存在encrypted_email
表中。
schema.rb
表的users
文件是什么样的?
如果是这种情况,我认为你只需要使用
User.find_by_encrypted_email("foo@foo.com")
而不是
User.find_by_email("foo@foo.com")
祝你好运!