Sha256: 8b2f78073a9b20bc455be8a3984aba2edf1580d59878449772930ef3745716b5
Contents?: true
Size: 1.46 KB
Versions: 2
Compression:
Stored size: 1.46 KB
Contents
module ContextExposer::ResourceController extend ActiveSupport::Concern include ContextExposer::BaseController included do expose_resources end protected module ClassMethods def expose_resources *types types = types.flatten types = types.empty? ? [:all] : types unless expose_resource_method? :one, types _exposing(normalized_resource_name.singularize) { find_single_resource } end unless expose_resource_method? :many, types _exposing(normalized_resource_name.pluralize) { find_all_resources } end unless expose_resource_method? :list, types _exposing(normalized_resource_list) { find_all_resources.to_a } end end def expose_resource_method? type, types ([type, :all] & types).empty? end end def resource_id params[:id] end def find_single_resource self.class._the_resource.find resource_id end def find_all_resources self.class._the_resource.all end module ClassMethods # for use in ResourceController def _exposing name, options = {}, &block exposed name, options, &block end def _the_resource clazz_name = self.to_s.sub(/Controller$/, '').singularize clazz_name.constantize rescue NameError => e raise "Resource #{clazz_name} is not defined. #{e}" end def normalized_resource_list normalized_resource_name.singularize + '_list' end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
context_exposer-0.4.1 | lib/context_exposer/resource_controller.rb |
context_exposer-0.4.0 | lib/context_exposer/resource_controller.rb |