1

使用带有 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)

谢谢!

4

1 回答 1

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,我在相同的代码中遇到了错误的解密错误。

于 2013-10-06T15:27:01.580 回答