Module: CanCan::Ability::Actions
- Included in:
- CanCan::Ability
- Defined in:
- lib/cancan/ability/actions.rb
Instance Method Summary collapse
-
#alias_action(*args) ⇒ Object
Alias one or more actions into another one.
-
#aliased_actions ⇒ Object
Returns a hash of aliased actions.
-
#clear_aliased_actions ⇒ Object
Removes previously aliased actions including the defaults.
Instance Method Details
#alias_action(*args) ⇒ Object
Alias one or more actions into another one.
alias_action :update, :destroy, :to => :modify
can :modify, Comment
Then :modify permission will apply to both :update and :destroy requests.
can? :update, Comment # => true
can? :destroy, Comment # => true
This only works in one direction. Passing the aliased action into the “can?” call will not work because aliases are meant to generate more generic actions.
alias_action :update, :destroy, :to => :modify
can :update, Comment
can? :modify, Comment # => false
Unless that exact alias is used.
can :modify, Comment
can? :modify, Comment # => true
The following aliases are added by default for conveniently mapping common controller actions.
alias_action :index, :show, :to => :read
alias_action :new, :to => :create
alias_action :edit, :to => :update
This way one can use params in the controller to determine the permission.
35 36 37 38 39 40 |
# File 'lib/cancan/ability/actions.rb', line 35 def alias_action(*args) target = args.pop[:to] validate_target(target) aliased_actions[target] ||= [] aliased_actions[target] += args end |
#aliased_actions ⇒ Object
Returns a hash of aliased actions. The key is the target and the value is an array of actions aliasing the key.
43 44 45 |
# File 'lib/cancan/ability/actions.rb', line 43 def aliased_actions @aliased_actions ||= default_alias_actions end |
#clear_aliased_actions ⇒ Object
Removes previously aliased actions including the defaults.
48 49 50 |
# File 'lib/cancan/ability/actions.rb', line 48 def clear_aliased_actions @aliased_actions = {} end |