Module: Flapjack::Diner::Tools::ClassMethods

Defined in:
lib/flapjack-diner/tools.rb

Instance Method Summary collapse

Instance Method Details

#included_dataObject



5
6
7
8
# File 'lib/flapjack-diner/tools.rb', line 5

def included_data
  return if context.nil?
  context[return_keys_as_strings ? 'included' : :included]
end


10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/flapjack-diner/tools.rb', line 10

def related(record, rel, incl = included_data)
  return if incl.nil?

  type = record[return_keys_as_strings ? 'type' : :type]
  return if type.nil?

  res = Flapjack::Diner::Configuration::RESOURCES.values.detect do |r|
    type.eql?(r[:resource])
  end
  return if res.nil? || res[:relationships].nil?

  rel_cfg = res[:relationships][rel.to_sym]
  return if rel_cfg.nil?

  rel_type = rel_cfg[:resource]
  has_data = incl.key?(rel_type)
  case rel_cfg[:number]
  when :singular
    has_data ? singularly_related(record, rel, rel_type, incl) : nil
  else
    has_data ? multiply_related(record, rel, rel_type, incl) : []
  end
end