使用带有rails 3.2.11的attr_encryptor-2.0.0 gem来加密postgresql 9.2.2数据库中的文本字段。
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)
谢谢!
答案 0 :(得分:1)
使用attr_encrypted-1.2.1 gem和以下select子句结束:
tasks = current_user.tasks.select {|t| Task.decrypt(:description, t.encrypted_description).include?(s))}
使用attr_encryptor-2.0.0 gem我使用相同的代码得到了一个糟糕的解密错误。