2014-01-07 77 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

相關問題