Class: Blacksand::MyJsonType

Inherits:
ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Json
  • Object
show all
Defined in:
lib/blacksand/my_json_type.rb

Overview

为了能使 form 获取对象的状态,因为获取状态是使用 obj.send(name). 而默认 hash 是不能工作的。

Instance Method Summary collapse

Instance Method Details

#deserialize(value) ⇒ Object

override active_record 5



30
31
32
33
34
35
36
37
38
# File 'lib/blacksand/my_json_type.rb', line 30

def deserialize(value)
  super_value = super

  if value.is_a?(::String)
    MyOpenStruct.new super_value
  else
    super_value
  end
end

#serialize(value) ⇒ Object

override active_record 5



41
42
43
44
45
46
47
# File 'lib/blacksand/my_json_type.rb', line 41

def serialize(value)
  if value.is_a? MyOpenStruct
    ::ActiveSupport::JSON.encode(value.to_h)
  else
    super
  end
end

#type_cast_for_database(value) ⇒ Object

override active_record 4



20
21
22
23
24
25
26
# File 'lib/blacksand/my_json_type.rb', line 20

def type_cast_for_database(value)
  if value.is_a? MyOpenStruct
    ::ActiveSupport::JSON.encode(value.to_h)
  else
    super
  end
end

#type_cast_from_database(value) ⇒ Object

override active_record 4



9
10
11
12
13
14
15
16
17
# File 'lib/blacksand/my_json_type.rb', line 9

def type_cast_from_database(value)
  super_value = super

  if value.is_a?(::String)
    MyOpenStruct.new super_value
  else
    super_value
  end
end