Module: Effective::CrudController
- Extended by:
- ActiveSupport::Concern
- Included in:
- WizardController
- Defined in:
- app/controllers/concerns/effective/crud_controller.rb,
app/controllers/concerns/effective/crud_controller/dsl.rb,
app/controllers/concerns/effective/crud_controller/save.rb,
app/controllers/concerns/effective/crud_controller/paths.rb,
app/controllers/concerns/effective/crud_controller/actions.rb,
app/controllers/concerns/effective/crud_controller/respond.rb,
app/controllers/concerns/effective/crud_controller/submits.rb,
app/controllers/concerns/effective/crud_controller/permitted_params.rb
Defined Under Namespace
Modules: Actions, ClassMethods, Dsl, Paths, PermittedParams, Respond, Save, Submits
Constant Summary
Constants included from PermittedParams
Instance Method Summary collapse
- #action_missing(action, *args, &block) ⇒ Object
- #effective_resource(safe: false) ⇒ Object
- #resource ⇒ Object
- #resource=(instance) ⇒ Object
- #resources ⇒ Object
- #resources=(instance) ⇒ Object
Methods included from Save
#commit_action, #duplicate_resource, #reload_resource, #resource_flash, #save_resource
Methods included from Respond
#respond_with_error, #respond_with_success
Methods included from PermittedParams
#resource_active_model_permitted_params, #resource_permitted_params
Methods included from Paths
#referer_redirect_path, #resource_action_path, #resource_destroy_path, #resource_duplicate_path, #resource_edit_path, #resource_index_path, #resource_new_path, #resource_redirect_path, #resource_show_path, #specific_redirect_path?
Methods included from Actions
#collection_action, #create, #destroy, #edit, #index, #member_action, #new, #show, #update
Instance Method Details
#action_missing(action, *args, &block) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'app/controllers/concerns/effective/crud_controller.rb', line 64 def action_missing(action, *args, &block) effective_resource = self.effective_resource(safe: true) return super if effective_resource.blank? action = action.to_sym if effective_resource.member_actions.include?(action) return member_action(action) end if effective_resource.collection_actions.include?(action) return collection_action(action) end super end |
#effective_resource(safe: false) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'app/controllers/concerns/effective/crud_controller.rb', line 44 def effective_resource(safe: false) @_effective_resource ||= begin relation = instance_exec(&resource_scope_relation) if respond_to?(:resource_scope_relation) if respond_to?(:resource_scope_relation) unless relation.kind_of?(ActiveRecord::Relation) || (relation.kind_of?(Class) && relation.ancestors.include?(ActiveModel::Model)) raise('resource_scope must return an ActiveRecord::Relation or class including ActiveModel::Model') end end resource = Effective::Resource.new(controller_path, relation: relation) unless resource.relation.kind_of?(ActiveRecord::Relation) || resource.active_model? raise("unable to build resource_scope for #{resource.klass || 'unknown klass'}. Please name your controller to match an existing model, or manually define a resource_scope.") unless safe else resource end end end |
#resource ⇒ Object
28 29 30 |
# File 'app/controllers/concerns/effective/crud_controller.rb', line 28 def resource # @thing instance_variable_get("@#{resource_name}") end |
#resource=(instance) ⇒ Object
32 33 34 |
# File 'app/controllers/concerns/effective/crud_controller.rb', line 32 def resource=(instance) instance_variable_set("@#{resource_name}", instance) end |
#resources ⇒ Object
36 37 38 |
# File 'app/controllers/concerns/effective/crud_controller.rb', line 36 def resources # @things send(:instance_variable_get, "@#{resource_plural_name}") end |
#resources=(instance) ⇒ Object
40 41 42 |
# File 'app/controllers/concerns/effective/crud_controller.rb', line 40 def resources=(instance) send(:instance_variable_set, "@#{resource_plural_name}", instance) end |