Module: Croods::Resource::Policy
- Defined in:
- lib/croods/resource/policy.rb
Instance Method Summary collapse
- #create_policy! ⇒ Object
- #create_policy_actions! ⇒ Object
- #extend_policy(&block) ⇒ Object
- #policy ⇒ Object
- #policy_blocks ⇒ Object
- #policy_name ⇒ Object
- #policy_scope(action) ⇒ Object
- #policy_scope_name(action) ⇒ Object
Instance Method Details
#create_policy! ⇒ Object
32 33 34 35 36 |
# File 'lib/croods/resource/policy.rb', line 32 def create_policy! Object.const_set(policy_name, Class.new(Croods::Policy)) policy_blocks.each { |block| policy.instance_eval(&block) } create_policy_actions! end |
#create_policy_actions! ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/croods/resource/policy.rb', line 38 def create_policy_actions! (actions + additional_actions).each do |action| policy.define_method("#{action.name}?") { (action) } Object.const_set( policy_scope_name(action.name), Class.new(Croods::Policy::Scope) ) policy_scope(action.name).define_method(:action) { action } end end |
#extend_policy(&block) ⇒ Object
6 7 8 9 10 |
# File 'lib/croods/resource/policy.rb', line 6 def extend_policy(&block) return unless block policy_blocks << block end |
#policy ⇒ Object
16 17 18 |
# File 'lib/croods/resource/policy.rb', line 16 def policy policy_name.constantize end |
#policy_blocks ⇒ Object
12 13 14 |
# File 'lib/croods/resource/policy.rb', line 12 def policy_blocks @policy_blocks ||= [] end |
#policy_name ⇒ Object
24 25 26 |
# File 'lib/croods/resource/policy.rb', line 24 def policy_name "#{model_name}Policy" end |
#policy_scope(action) ⇒ Object
20 21 22 |
# File 'lib/croods/resource/policy.rb', line 20 def policy_scope(action) policy_scope_name(action).constantize end |
#policy_scope_name(action) ⇒ Object
28 29 30 |
# File 'lib/croods/resource/policy.rb', line 28 def policy_scope_name(action) "#{model_name}#{action.to_s.titleize.gsub(/\ /, '')}Scope" end |