Chcę przetestować model, który wykorzystuje attr_encrypted zaszyfrować tajemnicy w bazieJak używać urządzeń z attr_encrypted
class Thing
attr_encrypted :secret, encode: true
end
Ale kiedy zdefiniować tajemnicę w uchwycie zakodowany znak nowej linii zostanie uciekł na zewnątrz.
one:
encrypted_secret: '<%= Thing.encrypt_secret(SecureRandom.uuid) %>'
Czyli:
'axZFZEknxUSYdUlPhwLBbj8CwSeCW5at2INA98EcCcY7MVFdmXvk7Sb4DZhC\nm6qD\n'
są przechowywane w bazie danych jako:
'axZFZEknxUSYdUlPhwLBbj8CwSeCW5at2INA98EcCcY7MVFdmXvk7Sb4DZhC
m6qD'
Problem z tym jest to, że wtedy nie powiedzie:
thing = things(:one)
assert_equal thing, Thing.find_by_secret(thing.secret)
Thing. find_by_secret (thing.secret) zwraca nil becau se wynikowa kwerenda SQL próbuje dopasować dwie wersje zaszyfrowanego tajnego klucza i nie uda się dopasować.
Próbowałem:
one:
encrypted_secret: 'axZFZEknxUSYdUlPhwLBbj8CwSeCW5at2INA98EcCcY7MVFdmXvk7Sb4DZhC\nm6qD\n'
ale uzyskać ten sam rezultat.
Jak skonfigurować swoje urządzenia do pracy z attr_encrypted?