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