CanCan REST links

REST link helpers for the CanCan permission system.

Rails 3 install

in Gemfile insert:

gem 'cancan-rest-links'  

Then run $ bundle install from the terminal.

Rails 3 usage

See the demo app at CanCan permits demo app

Configure your Rails 3 app for use with CanCan and some Authentication solution like Authlogic or Devise.

This locale file should be placed in config/locales in your Rails 3 app. The generator will create the above locale file as cream.en.yml

Use with CanCan permits

CanCan permits is a gem that lets you use Permits with CanCan to configure permissions.

REST links

These REST link helpers always check the current_user to see if the user has the required permission access for the required action on the given model. If not, the link is not rendered.

The following is a list of the REST links available and the required CanCan permission level for the model instance(s) that is linked to. Note that the CanCan :manage level implies full permission and :write full mutation access.

  • Index :read
  • Show :read
  • Create :create
  • Edit :edit
  • Delete :destroy

Typically the REST links are used within views, partials and view helpers. Example

<%= index_link(Post, 'To the posts') %>
<%= create_link(Post, 'Create a new post') %>

For the create and index REST actions, you can pass either an instance or a class of a model object. The other REST options only work with model instances.


index_link(Post, 'To the posts')
index_link(@post, 'All the posts')


create_link(Post, 'Create the post')
create_link(@post, 'Create the post')
### edit_link
edit_link(@post, 'Edit the post')
### delete_link
delete_link(@post, 'Delete the post')
### show_link
show_link(@post, 'Show the post')
## Locale file A locale file with the following structure can be created to define define labels for the various REST actions.

    confirm: 'Are you sure?'
        index: "Index"
        new: "New"
        edit: "Edit"
        delete: "Delete"
        show: "Show"  

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.


Copyright (c) 2010 Kristian Mandrup. See LICENSE for details.