Ruby on rails Activeadmin自定义筛选器加密属性

Ruby on rails Activeadmin自定义筛选器加密属性,ruby-on-rails,encryption,activeadmin,Ruby On Rails,Encryption,Activeadmin,我正在尝试对筛选搜索字段进行加密 例如,假设在rails控制台中,我可以执行以下操作: u=用户。通过电子邮件查找someone@example.com)) 并获得一个用户 但是,如果我以这种方式获得用户: u=用户。查找(1) 返回的对象具有加密的电子邮件属性。也就是说,我仍然可以通过以下方式获得该用户的电子邮件: u、 电子邮件 但是我不知道如何让Activeadmin/meta_搜索通过电子邮件进行过滤 想法?我不知道你是如何加密电子邮件字段的,或者为什么,这是为了防止黑客从你的数据库中获

我正在尝试对筛选搜索字段进行加密

例如,假设在rails控制台中,我可以执行以下操作:

u=用户。通过电子邮件查找someone@example.com))

并获得一个用户

但是,如果我以这种方式获得用户:

u=用户。查找(1)

返回的对象具有加密的电子邮件属性。也就是说,我仍然可以通过以下方式获得该用户的电子邮件:

u、 电子邮件

但是我不知道如何让Activeadmin/meta_搜索通过电子邮件进行过滤


想法?

我不知道你是如何加密电子邮件字段的,或者为什么,这是为了防止黑客从你的数据库中获取它们?如果不希望属性在数据库中公开,但希望能够在控制器或模型层中搜索该属性,则应创建虚拟属性。这可以通过Ruby attr方法完成,电子邮件应该在创建时存储

attr_accessible :email, :email_encrypted

attr_reader :email

def email=(email)
  @email = email
  self.email_encrypted = ENCRYPTION.create(email)
end

这里的加密是您正在使用的任何加密库,例如BCRYPT。

谢谢您的回答,但我想我现在可能有了一种新的思路。由于我们可以使用“通过电子邮件查找”,我认为我们只需要一个表单来进行搜索,实际上我们不需要过滤器或任何与此相关的链接。我现在要去看看如何在ActiveAdmin中实现这个搜索。另外,出于监管原因,我们必须在DB中加密我们的电子邮件。悲伤的脸。