An ActiveModel::Type
that encrypts/decrypts strings of text.
This is the central piece that connects the encryption system with encrypts
declarations in the model classes. Whenever you declare an attribute as encrypted, it configures an EncryptedAttributeType
for that attribute.
# File activerecord/lib/active_record/encryption/encrypted_attribute_type.rb, line 23 def initialize(scheme:, cast_type: ActiveModel::Type::String.new, previous_type: false) super() @scheme = scheme @cast_type = cast_type @previous_type = previous_type end
:scheme
- A Scheme
with the encryption properties for this attribute.
:cast_type
- A type that will be used to serialize (before encrypting) and deserialize (after decrypting). ActiveModel::Type::String
by default.
# File activerecord/lib/active_record/encryption/encrypted_attribute_type.rb, line 42 def changed_in_place?(raw_old_value, new_value) old_value = raw_old_value.nil? ? nil : deserialize(raw_old_value) old_value != new_value end
# File activerecord/lib/active_record/encryption/encrypted_attribute_type.rb, line 30 def deserialize(value) cast_type.deserialize decrypt(value) end
# File activerecord/lib/active_record/encryption/encrypted_attribute_type.rb, line 34 def serialize(value) if serialize_with_oldest? serialize_with_oldest(value) else serialize_with_current(value) end end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.