Module: ArSerializer::Serializable::ClassMethods

Defined in:
lib/ar_serializer.rb

Instance Method Summary collapse

Instance Method Details

#_custom_preloadersObject



59
60
61
# File 'lib/ar_serializer.rb', line 59

def _custom_preloaders
  @_custom_preloaders ||= {}
end

#_serializer_field_info(name) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/ar_serializer.rb', line 20

def _serializer_field_info(name)
  namespaces = ArSerializer::Serializer.current_namespaces
  if namespaces
    Array(namespaces).each do |ns|
      field = _serializer_namespace(ns)[name.to_s]
      return field if field
    end
  end
  field = _serializer_namespace(nil)[name.to_s]
  if field
    field
  elsif superclass < ArSerializer::Serializable
    superclass._serializer_field_info name
  end
end

#_serializer_field_keysObject



36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/ar_serializer.rb', line 36

def _serializer_field_keys
  namespaces = ArSerializer::Serializer.current_namespaces
  keys = []
  if namespaces
    Array(namespaces).each do |ns|
      keys |= _serializer_namespace(ns).keys
    end
  end
  keys |= _serializer_namespace(nil).keys
  keys |= superclass._serializer_field_keys if superclass < ArSerializer::Serializable
  keys
end

#_serializer_namespace(ns) ⇒ Object



16
17
18
# File 'lib/ar_serializer.rb', line 16

def _serializer_namespace(ns)
  (@_serializer_field_info ||= {})[ns] ||= {}
end

#define_preloader(name, &block) ⇒ Object



63
64
65
# File 'lib/ar_serializer.rb', line 63

def define_preloader(name, &block)
  _custom_preloaders[name] = block
end

#serializer_defaults(*args, &block) ⇒ Object



67
68
69
# File 'lib/ar_serializer.rb', line 67

def serializer_defaults(*args, &block)
  serializer_field :defaults, *args, &block
end

#serializer_field(*names, namespace: nil, association: nil, **option, &data_block) ⇒ Object



49
50
51
52
53
54
55
56
57
# File 'lib/ar_serializer.rb', line 49

def serializer_field(*names, namespace: nil, association: nil, **option, &data_block)
  namespaces = namespace.is_a?(Array) ? namespace : [namespace]
  namespaces.each do |ns|
    names.each do |name|
      field = ArSerializer::Field.create(self, association || name, option, &data_block)
      _serializer_namespace(ns)[name.to_s] = field
    end
  end
end