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 に答える