Plugins - acts_as_checkpoint
Add to favoritesActsAsCheckpoint
This plugin provides a very simple syntax for setting up complex permissions in controllers and/or ActiveRecord models.
Tests are forthcoming, sorry.
Example for Controllers
Role-oriented approach:
class YourController < ApplicationController
acts_as_checkpoint :get_user_method => :current_user
controller_allows :administrator, :to => [ :index, :show, :destroy ]
controller_allows :registered_user, :to => [ :index, :show, :new, :edit, :create, :update ]
controller_allows :anonymous_user, :to => [ :index, :show ]
end
Action-oriented approach:
class YourController < ApplicationController
acts_as_checkpoint :get_user_method => :current_user
controller_allows :index , :by => [ :administrator, :registered_user, :anonymous_user ]
controller_allows :show , :by => [ :administrator, :registered_user ]
controller_allows :new , :by => :registered_user
controller_allows :edit , :by => :registered_user
controller_allows :create , :by => :registered_user
controller_allows :update , :by => :registered_user
controller_allows :destroy, :by => :administrator
end
The two approaches may be interspersed at will… just try not to get confused.
Example for Models
class Dog < ActiveRecord::Base
belongs_to :owner
acts_as_checkpoint
model_may :eat, :drink, :lick
model_allows :lick, :by => :self
model_allows :pet, :by => :owner
end
class Human < ActiveRecord::Base
has_many :dogs
acts_as_checkpoint
model_may :pet
model_allows :lick, :by => :dogs
end
human = Human.new
dog = Dog.new( :owner => human )
human.can_pet?( dog )
# => true
dog.can_eat?( human )
# => false
dog.can_lick?( human )
# => true
http://github.com/blangenfeld/acts_as_checkpoint/tree/master
git://github.com/blangenfeld/acts_as_checkpoint.git
Rails' (MIT)
Security

I can't seem to get the model permissions to work, I'm using the example found on test/user.rb ... but nothing works