class GenericController
Constants
- VALID_SORT
- VERSION
Public Instance Methods
create()
click to toggle source
# File lib/generic_controller.rb, line 7 def create @resource = cscope.new(model_params) @resource.save! respond_to do |f| f.any do response.headers['location'] = send("v#{api_version}_#{model_name.underscore}_url", @resource) render({ json: @resource, serializer: each_sez, status: :created }.merge!(render_options)) end end end
destroy()
click to toggle source
# File lib/generic_controller.rb, line 20 def destroy model.destroy(params[:id]) respond_to do |f| f.any do head :no_content end end end
index()
click to toggle source
# File lib/generic_controller.rb, line 55 def index query = cscope l = limit.to_i p = page.to_i off = offset.to_i o = order_by.to_sym s = sort.to_sym respond_to do |f| f.any do render({ json: query.order(o => s) .page(p) .per(l) .padding(off), meta: { total: query.count(:all), page: p, limit: l, order_by: o, sort: s, offset: off }, each_serializer: each_sez, status: :ok }.merge!(render_options)) end end end
show()
click to toggle source
# File lib/generic_controller.rb, line 29 def show respond_to do |f| f.any do render({ json: @resource, serializer: each_sez, status: :ok }.merge!(render_options)) end end end
update()
click to toggle source
# File lib/generic_controller.rb, line 41 def update @resource.attributes = model_params @resource.save! respond_to do |f| f.any do render({ json: @resource, serializer: each_sez, status: :ok }.merge!(render_options)) end end end
Private Instance Methods
api_version()
click to toggle source
# File lib/generic_controller.rb, line 143 def api_version self.class.to_s.split('::').first.delete!('V') end
attach_resource()
click to toggle source
# File lib/generic_controller.rb, line 139 def attach_resource @resource ||= cscope.find(params[:id]) end
cscope()
click to toggle source
# File lib/generic_controller.rb, line 128 def cscope cs = model cs = cs.where(['updated_at >= ?', parse_time(params[:updated_since])]) if params[:updated_since] cs = cs.where(['created_at >= ?', parse_time(params[:created_since])]) if params[:created_since] cs end
each_sez()
click to toggle source
# File lib/generic_controller.rb, line 90 def each_sez "#{norm_controller_name}Serializer".constantize end
limit()
click to toggle source
# File lib/generic_controller.rb, line 94 def limit params[:limit] ||= 20 end
model()
click to toggle source
# File lib/generic_controller.rb, line 124 def model model_name.constantize end
model_name()
click to toggle source
# File lib/generic_controller.rb, line 120 def model_name controller_name.classify end
norm_controller_name()
click to toggle source
# File lib/generic_controller.rb, line 116 def norm_controller_name controller_path.classify end
offset()
click to toggle source
# File lib/generic_controller.rb, line 98 def offset params[:offset] ||= 0 end
order_by()
click to toggle source
# File lib/generic_controller.rb, line 102 def order_by return params[:order_by] if model.column_names.include?(params[:order_by]) 'id' end
page()
click to toggle source
# File lib/generic_controller.rb, line 108 def page params[:page] ||= 1 end
parse_time(s)
click to toggle source
# File lib/generic_controller.rb, line 135 def parse_time(s) Time.zone.parse(s) end
render_options()
click to toggle source
# File lib/generic_controller.rb, line 86 def render_options {} end
sort()
click to toggle source
# File lib/generic_controller.rb, line 112 def sort params[:sort].in?(VALID_SORT) ? params[:sort] : VALID_SORT[0] end