CanCan REST links
REST link helpers for the CanCan permission system.
Rails 3 install
in Gemfile insert:
$ 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.
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) index_link(Post, 'To the posts') index_link(@post) index_link(@post, 'All the posts')
create_link(Post) create_link(Post, 'Create the post') create_link(@post) create_link(@post, 'Create the post')
edit_link(@post) edit_link(@post, 'Edit the post')
delete_link(@post) delete_link(@post, 'Delete the post')
show_link(@post) show_link(@post, 'Show the post')
A locale file with the following structure can be created to define define labels for the various REST actions.
en: cream: confirm: 'Are you sure?' actions: rest: 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.