Skip to content

Instantly share code, notes, and snippets.

@panthomakos
Created September 20, 2011 23:09
Show Gist options
  • Select an option

  • Save panthomakos/1230704 to your computer and use it in GitHub Desktop.

Select an option

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
Copy Markdown
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