Class: SkinnyControllers::Operation::Base
- Inherits:
-
Object
- Object
- SkinnyControllers::Operation::Base
- Includes:
- ModelHelpers
- Defined in:
- lib/skinny_controllers/operation/base.rb
Overview
An example Operation may looy like
module EventOperations
class Read < SkinnyControllers::Operation::Base
def run
model if allowed?
end
end
end
TODO: make the above the ‘default’ and not require to be defined
Direct Known Subclasses
Instance Attribute Summary collapse
-
#action ⇒ Object
Returns the value of attribute action.
-
#authorized_via_parent ⇒ Object
Returns the value of attribute authorized_via_parent.
-
#current_user ⇒ Object
Returns the value of attribute current_user.
-
#model_key ⇒ Object
Returns the value of attribute model_key.
-
#params ⇒ Object
Returns the value of attribute params.
-
#params_for_action ⇒ Object
Returns the value of attribute params_for_action.
Class Method Summary collapse
Instance Method Summary collapse
- #allowed? ⇒ Boolean
-
#allowed_for?(object) ⇒ Boolean
checks the policy.
-
#association_name_from_object ⇒ Object
TODO: maybe make this configurable?.
- #id_from_params ⇒ Object
-
#initialize(current_user, controller_params, params_for_action = nil, action = nil, model_key = nil) ⇒ Base
constructor
A new instance of Base.
- #model_class ⇒ Object
- #model_name ⇒ Object
-
#policy_class ⇒ Object
Takes the class name of self and converts it to a Policy class name.
-
#policy_for(object) ⇒ Object
A new policy object and caches it.
-
#policy_method_name ⇒ Object
Converts the class name to the method name to call on the policy.
Methods included from ModelHelpers
#find_model, #model, #model_from_id, #model_from_named_id, #model_from_params, #model_from_parent, #model_from_scope, #model_param_name, #model_params, #sanitized_params, #scoped_model
Constructor Details
#initialize(current_user, controller_params, params_for_action = nil, action = nil, model_key = nil) ⇒ Base
29 30 31 32 33 34 35 36 |
# File 'lib/skinny_controllers/operation/base.rb', line 29 def initialize(current_user, controller_params, params_for_action = nil, action = nil, model_key = nil) self. = false self.current_user = current_user self.action = action || controller_params[:action] self.params = controller_params self.params_for_action = params_for_action || controller_params self.model_key = model_key end |
Instance Attribute Details
#action ⇒ Object
Returns the value of attribute action.
18 19 20 |
# File 'lib/skinny_controllers/operation/base.rb', line 18 def action @action end |
#authorized_via_parent ⇒ Object
Returns the value of attribute authorized_via_parent.
18 19 20 |
# File 'lib/skinny_controllers/operation/base.rb', line 18 def end |
#current_user ⇒ Object
Returns the value of attribute current_user.
18 19 20 |
# File 'lib/skinny_controllers/operation/base.rb', line 18 def current_user @current_user end |
#model_key ⇒ Object
Returns the value of attribute model_key.
18 19 20 |
# File 'lib/skinny_controllers/operation/base.rb', line 18 def model_key @model_key end |
#params ⇒ Object
Returns the value of attribute params.
18 19 20 |
# File 'lib/skinny_controllers/operation/base.rb', line 18 def params @params end |
#params_for_action ⇒ Object
Returns the value of attribute params_for_action.
18 19 20 |
# File 'lib/skinny_controllers/operation/base.rb', line 18 def params_for_action @params_for_action end |
Class Method Details
.run(current_user, params) ⇒ Object
20 21 22 23 |
# File 'lib/skinny_controllers/operation/base.rb', line 20 def self.run(current_user, params) object = new(current_user, params) object.run end |
Instance Method Details
#allowed? ⇒ Boolean
88 89 90 |
# File 'lib/skinny_controllers/operation/base.rb', line 88 def allowed? allowed_for?(model) end |
#allowed_for?(object) ⇒ Boolean
checks the policy
93 94 95 |
# File 'lib/skinny_controllers/operation/base.rb', line 93 def allowed_for?(object) policy_for(object).send(policy_method_name) end |
#association_name_from_object ⇒ Object
TODO: maybe make this configurable?
62 63 64 |
# File 'lib/skinny_controllers/operation/base.rb', line 62 def association_name_from_object model_name.tableize.split('/').last end |
#id_from_params ⇒ Object
38 39 40 41 42 43 44 45 46 47 |
# File 'lib/skinny_controllers/operation/base.rb', line 38 def id_from_params unless @id_from_params @id_from_params = params[:id] if filter = params[:filter] @id_from_params = filter[:id].split(',') end end @id_from_params end |
#model_class ⇒ Object
49 50 51 |
# File 'lib/skinny_controllers/operation/base.rb', line 49 def model_class @model_class ||= Lookup::Model.class_from_operation(self.class.name) end |
#model_name ⇒ Object
53 54 55 |
# File 'lib/skinny_controllers/operation/base.rb', line 53 def model_name @object_type_name ||= Lookup::Model.name_from_operation(self.class.name) end |
#policy_class ⇒ Object
Takes the class name of self and converts it to a Policy class name
69 70 71 |
# File 'lib/skinny_controllers/operation/base.rb', line 69 def policy_class @policy_class ||= Lookup::Policy.class_from_model(model_name) end |
#policy_for(object) ⇒ Object
81 82 83 84 85 86 |
# File 'lib/skinny_controllers/operation/base.rb', line 81 def policy_for(object) @policy ||= policy_class.new( current_user, object, authorized_via_parent: ) end |
#policy_method_name ⇒ Object
Converts the class name to the method name to call on the policy
76 77 78 |
# File 'lib/skinny_controllers/operation/base.rb', line 76 def policy_method_name @policy_method_name ||= Lookup::Policy.method_name_for_operation(self.class.name) end |