Method: HaveAPI::ModelAdapters::ActiveRecord::Action::InstanceMethods#with_includes

Defined in:
lib/haveapi/model_adapters/active_record.rb

#with_includes(q = nil) ⇒ Object

Helper method that sets correct ActiveRecord includes according to the meta includes sent by the user. q is the model or partial AR query. If not set, action’s model class is used instead.



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/haveapi/model_adapters/active_record.rb', line 26

def with_includes(q = nil)
  q ||= self.class.model
  includes = meta && meta[:includes]
  args = includes.nil? ? [] : ar_parse_includes(includes)

  # Resulting includes may still contain duplicities in form of nested
  # includes. ar_default_includes returns a flat array where as
  # ar_parse_includes may contain hashes. But since ActiveRecord is taking
  # it well, it is not necessary to fix.
  args.concat(ar_default_includes).uniq

  if !args.empty?
    q.includes(*args)
  else
    q
  end
end