class Rails::Surrender::Render::Configuration

Container for config structure when rendering or generating the inclusion object.

Container for config structure when rendering or generating the inclusion object.

Container for config structure when rendering or generating the inclusion object.

Constants

Element

Attributes

ctrl_exclude[RW]
ctrl_include[RW]
history[RW]
reload_resource[RW]
reload_resource?[RW]
resource_class[RW]
user_exclude[RW]
user_include[RW]

Public Class Methods

new( resource_class: nil, reload_resource: false, user_exclude: [], user_include: [], ctrl_exclude: [], ctrl_include: [], history: [] ) click to toggle source
# File lib/rails/surrender/render/configuration.rb, line 26
def initialize(
  resource_class: nil,
  reload_resource: false,
  user_exclude: [],
  user_include: [],
  ctrl_exclude: [],
  ctrl_include: [],
  history: []
)
  @resource_class = resource_class
  @reload_resource = reload_resource
  @user_exclude = user_exclude.compact
  @user_include = user_include
  @ctrl_exclude = ctrl_exclude.compact
  @ctrl_include = ctrl_include
  @history = history

  validate_user_includes!
end

Private Instance Methods

attribute_type(attr, klass: resource_class) click to toggle source
# File lib/rails/surrender/render/configuration.rb, line 74
def attribute_type(attr, klass: resource_class)
  return :expand if klass.reflections.keys.include?(attr.to_s)
  return :associate if klass.reflections.keys.include?(attr.to_s.sub('_ids', '').pluralize)
  return :include if klass.attribute_names.include?(attr.to_s)
  return :include if klass.instance_methods.include?(attr)

  :none
end
invalid_local_user_includes() click to toggle source
# File lib/rails/surrender/render/configuration.rb, line 54
def invalid_local_user_includes
  local_user_includes.select { |include| attribute_type(include) == :none }
end
local_ctrl_excludes() click to toggle source
# File lib/rails/surrender/render/configuration.rb, line 58
def local_ctrl_excludes
  top_level_keys_from(ctrl_exclude)
end
local_ctrl_includes() click to toggle source
# File lib/rails/surrender/render/configuration.rb, line 62
def local_ctrl_includes
  top_level_keys_from(ctrl_include)
end
local_user_excludes() click to toggle source
# File lib/rails/surrender/render/configuration.rb, line 66
def local_user_excludes
  top_level_keys_from(user_exclude)
end
local_user_includes() click to toggle source
# File lib/rails/surrender/render/configuration.rb, line 70
def local_user_includes
  top_level_keys_from(user_include)
end
next_level_asks_from(list) click to toggle source
# File lib/rails/surrender/render/configuration.rb, line 87
def next_level_asks_from(list)
  list.select { |x| x.is_a? Hash }.reduce({}, :merge).symbolize_keys
end
top_level_keys_from(list) click to toggle source
# File lib/rails/surrender/render/configuration.rb, line 83
def top_level_keys_from(list)
  list.map { |x| x.is_a?(Hash) ? x.keys : x }.flatten.map(&:to_sym).uniq
end
validate_user_includes!() click to toggle source
# File lib/rails/surrender/render/configuration.rb, line 48
def validate_user_includes!
  return if invalid_local_user_includes.empty?

  raise Error, I18n.t('surrender.error.query_string.include.not_available', param: invalid_local_user_includes)
end