Module: ActiveEnquo::ActiveRecord::BaseExtension
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/active_enquo.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
Instance Method Details
#_read_attribute(attr_name, &block) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/active_enquo.rb', line 77 def _read_attribute(attr_name, &block) t = self.class.attribute_types[attr_name] if t.is_a?(::ActiveEnquo::Type) relation = self.class.arel_table.name value = @attributes.fetch_value(attr_name, &block) return nil if value.nil? field = ::ActiveEnquo.root.field(relation, attr_name) begin t.decrypt(value, @attributes.fetch_value(@primary_key).to_s, field) rescue Enquo::Error # If the record had not yet been inserted into the database at the time the # attribute was originally written, then that attribute's context will be empty. # This is troublesome, but it's tricky to solve at this layer, so we'll have to # take the risk and try and decryption with empty context. t.decrypt(value, "", field) end else super end end |
#_write_attribute(attr_name, value) ⇒ Object
98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/active_enquo.rb', line 98 def _write_attribute(attr_name, value) t = self.class.attribute_types[attr_name] if t.is_a?(::ActiveEnquo::Type) relation = self.class.arel_table.name field = ::ActiveEnquo.root.field(relation, attr_name) attr_opts = self.class..fetch(attr_name.to_sym, {}) db_value = t.encrypt(value, @attributes.fetch_value(@primary_key).to_s, field, **attr_opts) @attributes.write_from_user(attr_name, db_value) else super end end |