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
-
#resource_klass ⇒ Object
Thing.
- #resources ⇒ Object
- #resources=(instance) ⇒ Object
Methods included from Submits
#_insert_button, #_insert_on, #_insert_submit, #buttons, #ons, #submits
Methods included from Save
#commit_action, #duplicate_resource, #notify_exception, #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_admin_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_error_path, #resource_redirect_path, #resource_show_path, #specific_redirect_error_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
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'app/controllers/concerns/effective/crud_controller.rb', line 66 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 params[:id].present? ? member_action(action) : collection_action(action) end |
#effective_resource(safe: false) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'app/controllers/concerns/effective/crud_controller.rb', line 46 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
30 31 32 |
# File 'app/controllers/concerns/effective/crud_controller.rb', line 30 def resource # @thing instance_variable_get("@#{resource_name}") end |
#resource=(instance) ⇒ Object
34 35 36 |
# File 'app/controllers/concerns/effective/crud_controller.rb', line 34 def resource=(instance) instance_variable_set("@#{resource_name}", instance) end |
#resource_klass ⇒ Object
Thing
83 84 85 |
# File 'app/controllers/concerns/effective/crud_controller.rb', line 83 def resource_klass # Thing effective_resource.klass end |
#resources ⇒ Object
38 39 40 |
# File 'app/controllers/concerns/effective/crud_controller.rb', line 38 def resources # @things send(:instance_variable_get, "@#{resource_plural_name}") end |
#resources=(instance) ⇒ Object
42 43 44 |
# File 'app/controllers/concerns/effective/crud_controller.rb', line 42 def resources=(instance) send(:instance_variable_set, "@#{resource_plural_name}", instance) end |