Ich möchte ein Modell testen, die attr_encrypted ein Geheimnis in der Datenbank zu verschlüsseln verwendetWie verwenden Sie Leuchten mit attr_encrypted
class Thing
attr_encrypted :secret, encode: true
end
Aber wenn ich das Geheimnis in einer Befestigung der codierten Newline-Zeichen aus wird entkam definieren.
one:
encrypted_secret: '<%= Thing.encrypt_secret(SecureRandom.uuid) %>'
Das heißt:
'axZFZEknxUSYdUlPhwLBbj8CwSeCW5at2INA98EcCcY7MVFdmXvk7Sb4DZhC\nm6qD\n'
in der Datenbank gespeichert, wie:
'axZFZEknxUSYdUlPhwLBbj8CwSeCW5at2INA98EcCcY7MVFdmXvk7Sb4DZhC
m6qD'
Das Problem dabei ist, dass diese dann versagt:
thing = things(:one)
assert_equal thing, Thing.find_by_secret(thing.secret)
Sache. find_by_secret (thing.secret) gibt nil becau zurück Die resultierende SQL-Abfrage versucht, den beiden Versionen des verschlüsselten Geheimnisses zu entsprechen und keine Übereinstimmung zu erhalten.
Ich habe versucht:
one:
encrypted_secret: 'axZFZEknxUSYdUlPhwLBbj8CwSeCW5at2INA98EcCcY7MVFdmXvk7Sb4DZhC\nm6qD\n'
aber das gleiche Ergebnis.
Wie kann ich meine Fixtures so konfigurieren, dass sie mit attr_encrypted funktionieren?