Skip to content

Instantly share code, notes, and snippets.

@panthomakos
Created September 20, 2011 23:09
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save panthomakos/1230704 to your computer and use it in GitHub Desktop.
Save panthomakos/1230704 to your computer and use it in GitHub Desktop.
Improved Custom Error Messages in Ruby
class Group
module Error
class Standard < StandardError; end
class AlreadyAMember < Standard; end
class NotPermittedToJoin < Standard; end
end
def join user
raise Error::NotPermittedToJoin unless self.permitted?(user)
raise Error::AlreadyAMember if self.member?(user)
self.members.create :user => user
end
end
module GroupErrorDisplay
@@errors = {
Group::Error::AlreadyAMember => "You are already a member of this group.",
Group::Error::NotPermittedToJoin => "You don't have the proper permissions to join this group."
}
def self.message(error)
@@errors[error.class]
end
end
class GroupsController < ApplicationController
def join
@group = Group.find(params[:id])
@group.join current_user
flash[:notice] = "Welcome to the Group!"
redirect_to @group
rescue Group::Error::Standard => exception
flash[:error] = GroupErrorDisplay.message(exception)
render :action => 'request'
end
end
@panthomakos
Copy link
Author

This is the improved version of this gist.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment