Module: Deny

Extended by:
ActiveSupport::Concern
Included in:
Site::BaseController
Defined in:
app/support/deny.rb

Instance Method Summary collapse

Instance Method Details

#deny!(options = {}) ⇒ Object

es.

deny! :if => user.logged_in? deny! :if => -> { … } deny!

before_filter :deny! :if => :guest?

def guest?

!current_user

end



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/support/deny.rb', line 16

def deny!(options = {})
  negate = false
  expr = if options.has_key?(:if)
    options.delete(:if)
  elsif options.has_key?(:unless)
    negate = true
    options.delete(:unless)
  else
    true
  end

  condition = if expr.is_a?(Proc)
    expr.arity != 0 ? expr.call(self) : expr.call
  else
    expr
  end
  condition = negate ? !condition : condition

  if condition
    raise DeniedError.new
  end
 
  false
end