Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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

This comment has been minimized.

Copy link
Owner Author

@panthomakos panthomakos commented Sep 20, 2011

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