class Restrict::Restriction
Attributes
actions[RW]
on[RW]
options[RW]
unless[RW]
Public Class Methods
new(*args)
click to toggle source
# File lib/restrict/restriction.rb, line 5 def initialize(*args) @options = args.extract_options! @unless = @options[:unless] @on = @options[:on] || options[:of] || options[:object] @actions = args end
Public Instance Methods
applies_to?(action)
click to toggle source
# File lib/restrict/restriction.rb, line 12 def applies_to?(action) applies_to_action?(action) || applies_to_all_actions? end
validate(controller)
click to toggle source
# File lib/restrict/restriction.rb, line 16 def validate(controller) @unless or return unless_args = [] if @on object = controller.__send__(on) unless_args << object or raise Restrict::AccessDenied, reason: 'object given was #{object.inspect}' end unless controller.__send__(@unless, *unless_args) raise Restrict::AccessDenied, reason: self end end
Private Instance Methods
applies_to_action?(name)
click to toggle source
# File lib/restrict/restriction.rb, line 36 def applies_to_action?(name) actions.include?(name.to_sym) end
applies_to_all_actions?()
click to toggle source
# File lib/restrict/restriction.rb, line 32 def applies_to_all_actions? actions.empty? end