2014-01-07 52 views
0

我想让过滤器搜索加密字段。Activeadmin自定义过滤器加密属性

例如,让我们在铁轨控制台说,我可以做到以下几点:

U = User.find_by_email( “[email protected]”)

,并得到用户。

但是,如果我得到一个用户这样说:

U = User.find(1)

返回的对象有一个加密的电子邮件属性。尽管如此,我仍然可以得到该电子邮件的用户使用:

u.email

但是我不知道如何有Activeadmin/meta_search做它的魔力,通过电子邮件进行过滤。

想法?

回答

0

我不知道你是如何加密一个电子邮件字段或为什么,是为了防止黑客抓住你的数据库?如果您不希望在数据库中公开属性,但希望能够在Controller或Model层中搜索它,则应该创建一个虚拟属性。这可以通过Ruby attr方法来完成,并且应该在创建时存储电子邮件。

attr_accessible :email, :email_encrypted 

attr_reader :email 

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

其中,ENCRYPTION是您正在使用的任何加密库,例如BCRYPT。

+0

感谢您的回答,但我想我现在可能有一种新的思考方式。由于我们可以使用“find_by_email”,因此我认为我们只需要一个表单来进行搜索,而实际上我们并不需要过滤器或任何与之相关的链接。我现在要了解如何在ActiveAdmin中实现此搜索。 – jasongonzales

+0

另外,出于监管原因,我们必须在数据库中加密我们的电子邮件。悲伤的脸。 – jasongonzales

相关问题