Class: Gitlab::Database::Sha256Attribute
- Inherits:
-
ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Bytea
- Object
- ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Bytea
- Gitlab::Database::Sha256Attribute
- Defined in:
- lib/gitlab/database/sha256_attribute.rb
Overview
Class for casting binary data to hexadecimal SHA256 hashes (and vice-versa).
Using Sha256Attribute allows you to store SHA256 values as binary while still using them as if they were stored as string values. This gives you the ease of use of string values, but without the storage overhead.
Instance Method Summary collapse
-
#deserialize(value) ⇒ Object
Casts binary data to a SHA256 and remove trailing = and newline from encode64.
-
#serialize(value) ⇒ Object
Casts a SHA256 in a proper binary format.
Instance Method Details
#deserialize(value) ⇒ Object
Casts binary data to a SHA256 and remove trailing = and newline from encode64
12 13 14 15 16 17 18 19 |
# File 'lib/gitlab/database/sha256_attribute.rb', line 12 def deserialize(value) value = super(value) if value.present? Base64.encode64(value).delete("=").chomp("\n") else nil end end |
#serialize(value) ⇒ Object
Casts a SHA256 in a proper binary format. which is 32 bytes long
22 23 24 25 26 27 28 29 30 |
# File 'lib/gitlab/database/sha256_attribute.rb', line 22 def serialize(value) arg = if value.present? Base64.decode64(value) else nil end super(arg) end |