Rails 3.1. Очистка базы данных, зашифрованной с помощью attr_encrypted gem (где условие для зашифрованных полей) - PullRequest
6 голосов
/ 16 января 2012

Я зашифровал поле в таблице с помощью гема attr_encrypted.Теперь я хочу запросить это конкретное поле, сравнивая его со значением, полученным из формы.Как я могу это сделать?

РЕДАКТИРОВАТЬ : мне нужно запросить несколько зашифрованных полей.Например: поиск по encrypted_email, encrypted_name и т. Д. (С использованием условия OR в предложении where)

Ответы [ 2 ]

3 голосов
/ 16 января 2012

attr_encrypted перехватывает find_by методы, поэтому вы должны быть в состоянии сделать это:

class User < ActiveRecord::Base
  attr_encrypted :email, :key => 'a secret key'
  attr_encrypted :password, :key => 'some other secret key'
end

User.find_by_email_and_password('test@example.com', 'testing')

Это переписано как

User.find_by_encrypted_email_and_encrypted_password('ENCRYPTED EMAIL', 'ENCRYPTED PASSWORD')
2 голосов
/ 28 апреля 2015
class User < ActiveRecord::Base 
  attr_encrypted :email, :key => 'a secret key'
end

Если вы хотите написать запрос для получения пользователя, чей адрес электронной почты 'abc@xyz.com', то вы можете сделать либо

User.where(encrypted_email: User.encrypt_email('abc@xyz.com'))

или

User.scoped_by_email('abc@xyz.com') # works only for dynamic scope methods
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...