2013-09-30 57 views
1

使用attr_encryptor-2.0.0 gem with rails 3.2.11加密postgresql 9.2.2數據庫中的文本字段。在加密字段的where子句中搜索子字符串

class Task < ActiveRecord::Base 
    attr_encrypted :description, :key => 'A secret key' 

加密之前我用下面的where子句來找到描述包含給定的搜索詞s記錄。

current_user.tasks.where("description like ? ", '%'+s+'%') 

我該如何使用加密描述欄做到這一點?

我不明白find_by_encrypted_<column>是如何工作的。下面的代碼返回nil是否使用整個描述或(現有記錄的)子字符串作爲搜索詞s

current_user.tasks.find_by_encrypted_description(Task.encrypt_description(s)) 

我沒有改變添加加密後創建記錄的方式。我是不是該?

t = current_user.tasks.build(:description => @description) 

謝謝!

回答

1

結束了使用attr_encrypted-1.2.1寶石及以下SELECT子句:

tasks = current_user.tasks.select {|t| Task.decrypt(:description, t.encrypted_description).include?(s))}

隨着attr_encryptor-2.0.0寶石我得到一個壞的解密錯誤代碼相同。

相關問題