module Sequel::Plugins::Serialization::InstanceMethods
Public Instance Methods
before_validation()
click to toggle source
Serialize deserialized values before saving
Calls superclass method
# File lib/sequel/plugins/serialization.rb 191 def before_validation 192 serialize_deserialized_values 193 super 194 end
deserialized_values()
click to toggle source
Hash
of deserialized values, used as a cache.
# File lib/sequel/plugins/serialization.rb 178 def deserialized_values 179 @deserialized_values ||= {} 180 end
freeze()
click to toggle source
Freeze the deserialized values
Calls superclass method
# File lib/sequel/plugins/serialization.rb 183 def freeze 184 deserialized_values 185 super 186 deserialized_values.freeze 187 self 188 end
Private Instance Methods
_refresh_set_values(hash)
click to toggle source
Clear any cached deserialized values when doing a manual refresh.
Calls superclass method
# File lib/sequel/plugins/serialization.rb 199 def _refresh_set_values(hash) 200 @deserialized_values.clear if @deserialized_values 201 super 202 end
deserialize_value(column, v)
click to toggle source
Deserialize the column value. Called when the model column accessor is called to return a deserialized value.
# File lib/sequel/plugins/serialization.rb 206 def deserialize_value(column, v) 207 unless v.nil? 208 raise Sequel::Error, "no entry in deserialization_map for #{column.inspect}" unless callable = model.deserialization_map[column] 209 callable.call(v) 210 end 211 end
initialize_copy(other)
click to toggle source
Dup the deserialized values when duping model instance.
Calls superclass method
# File lib/sequel/plugins/serialization.rb 214 def initialize_copy(other) 215 super 216 @deserialized_values = Hash[other.deserialized_values] 217 self 218 end
serialize_deserialized_values()
click to toggle source
Serialize all deserialized values
# File lib/sequel/plugins/serialization.rb 221 def serialize_deserialized_values 222 deserialized_values.each{|k,v| @values[k] = serialize_value(k, v)} 223 end
serialize_value(column, v)
click to toggle source
Serialize the column value. Called before saving to ensure the serialized value is saved in the database.
# File lib/sequel/plugins/serialization.rb 227 def serialize_value(column, v) 228 unless v.nil? 229 raise Sequel::Error, "no entry in serialization_map for #{column.inspect}" unless callable = model.serialization_map[column] 230 callable.call(v) 231 end 232 end