Class: ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Hstore
- Inherits:
 - 
      Type::Value
      
        
- Object
 - ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Hstore
 
 
- Includes:
 - ActiveModel::Type::Helpers::Mutable
 
- Defined in:
 - lib/active_record/connection_adapters/postgresql/oid/hstore.rb
 
Overview
:nodoc:
Instance Method Summary collapse
- #accessor ⇒ Object
 - 
  
    
      #changed_in_place?(raw_old_value, new_value)  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Will compare the Hash equivalents of
raw_old_valueandnew_value. - #deserialize(value) ⇒ Object
 - #serialize(value) ⇒ Object
 - #type ⇒ Object
 
Instance Method Details
#accessor ⇒ Object
      36 37 38  | 
    
      # File 'lib/active_record/connection_adapters/postgresql/oid/hstore.rb', line 36 def accessor ActiveRecord::Store::StringKeyedHashAccessor end  | 
  
#changed_in_place?(raw_old_value, new_value) ⇒ Boolean
Will compare the Hash equivalents of raw_old_value and new_value. By comparing hashes, this avoids an edge case where the order of the keys change between the two hashes, and they would not be marked as equal.
      44 45 46  | 
    
      # File 'lib/active_record/connection_adapters/postgresql/oid/hstore.rb', line 44 def changed_in_place?(raw_old_value, new_value) deserialize(raw_old_value) != new_value end  | 
  
#deserialize(value) ⇒ Object
      14 15 16 17 18 19 20 21 22 23 24  | 
    
      # File 'lib/active_record/connection_adapters/postgresql/oid/hstore.rb', line 14 def deserialize(value) if value.is_a?(::String) ::Hash[value.scan(HstorePair).map { |k, v| v = v.upcase == "NULL" ? nil : v.gsub(/\A"(.*)"\Z/m, '\1').gsub(/\\(.)/, '\1') k = k.gsub(/\A"(.*)"\Z/m, '\1').gsub(/\\(.)/, '\1') [k, v] }] else value end end  | 
  
#serialize(value) ⇒ Object
      26 27 28 29 30 31 32 33 34  | 
    
      # File 'lib/active_record/connection_adapters/postgresql/oid/hstore.rb', line 26 def serialize(value) if value.is_a?(::Hash) value.map { |k, v| "#{escape_hstore(k)}=>#{escape_hstore(v)}" }.join(", ") elsif value.respond_to?(:to_unsafe_h) serialize(value.to_unsafe_h) else value end end  | 
  
#type ⇒ Object
      10 11 12  | 
    
      # File 'lib/active_record/connection_adapters/postgresql/oid/hstore.rb', line 10 def type :hstore end  |