module HalApi::Controller::Resources

Private Instance Methods

create_resource() click to toggle source
# File lib/hal_api/controller/resources.rb, line 28
def create_resource
  resource
end
decorate_query(res) click to toggle source

Decorations

# File lib/hal_api/controller/resources.rb, line 88
def decorate_query(res)
  filtered(paged(sorted(scoped(included(res)))))
end
destroy_resource() click to toggle source
# File lib/hal_api/controller/resources.rb, line 32
def destroy_resource
  resource
rescue ::ActiveRecord::RecordNotFound
  raise HalApi::Errors::NotFound.new
end
filtered(arel) click to toggle source
# File lib/hal_api/controller/resources.rb, line 92
def filtered(arel)
  keys = self.class.resources_params || []
  where_hash = params.slice(*keys)
  where_hash = where_hash.permit(where_hash.keys)
  arel = arel.where(where_hash) unless where_hash.blank?
  arel
end
find_base() click to toggle source
# File lib/hal_api/controller/resources.rb, line 82
def find_base
  filtered(scoped(included(resources_base)))
end
included(res) click to toggle source
# File lib/hal_api/controller/resources.rb, line 100
def included(res)
  res
end
index_collection() click to toggle source

action specific resources

# File lib/hal_api/controller/resources.rb, line 7
def index_collection
  HalApi::PagedCollection.new(
    resources,
    request,
    item_class: self.class.resource_class,
    item_decorator: self.class.resource_representer
  )
end
paged(arel) click to toggle source
# File lib/hal_api/controller/resources.rb, line 104
def paged(arel)
  if params[:per].to_i <= 0
    arel.page(params[:page]).per(Kaminari.config.default_per_page)
  else
    arel.page(params[:page]).per(params[:per])
  end
end
resource() click to toggle source
# File lib/hal_api/controller/resources.rb, line 38
def resource
  resource = instance_variable_get("@#{resource_name}")
  return resource if resource

  resource = if params[:id]
    find_base.send(self.class.find_method, params[:id])
  elsif request.post?
    filtered(resources_base).build
  end
  raise HalApi::Errors::NotFound.new if resource.nil?
  self.resource = resource
end
resource=(res) click to toggle source
# File lib/hal_api/controller/resources.rb, line 51
def resource=(res)
  instance_variable_set("@#{resource_name}", res)
end
resource_name() click to toggle source
# File lib/hal_api/controller/resources.rb, line 55
def resource_name
  self.class.resource_class.name.underscore
end
resources() click to toggle source

Plural resources

# File lib/hal_api/controller/resources.rb, line 61
def resources
  instance_variable_get("@#{resources_name}") ||
    self.resources = decorate_query(resources_base)
end
resources=(res) click to toggle source
# File lib/hal_api/controller/resources.rb, line 66
def resources=(res)
  instance_variable_set("@#{resources_name}", res)
end
resources_base() click to toggle source
# File lib/hal_api/controller/resources.rb, line 74
def resources_base
  self.class.resource_class.where(nil)
end
resources_name() click to toggle source
# File lib/hal_api/controller/resources.rb, line 70
def resources_name
  resource_name.pluralize
end
resources_query() click to toggle source
# File lib/hal_api/controller/resources.rb, line 78
def resources_query
  filtered(scoped(resources_base))
end
scoped(res) click to toggle source
# File lib/hal_api/controller/resources.rb, line 112
def scoped(res)
  res
end
show_resource() click to toggle source
# File lib/hal_api/controller/resources.rb, line 16
def show_resource
  resource
rescue ::ActiveRecord::RecordNotFound
  raise HalApi::Errors::NotFound.new
end
sorted(arel) click to toggle source
# File lib/hal_api/controller/resources.rb, line 116
def sorted(arel)
  arel.order(id: :desc)
end
update_resource() click to toggle source
# File lib/hal_api/controller/resources.rb, line 22
def update_resource
  resource
rescue ::ActiveRecord::RecordNotFound
  raise HalApi::Errors::NotFound.new
end