Instantly share code, notes, and snippets.

Embed
What would you like to do?
Custom Error Messages in Ruby
class Group
module Error
class Standard < StandardError; end
class AlreadyAMember < Standard
def message
"You are already a member of this group."
end
end
class NotPermittedToJoin < Standard
def message
"You don't have the proper permissions to join this group."
end
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
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] = exception.message
render :action => 'request'
end
end
@panthomakos

This comment has been minimized.

Owner

panthomakos commented Sep 20, 2011

An improved and more OOP approach to this example can be found here.

@aruprakshit

This comment has been minimized.

aruprakshit commented Jul 13, 2015

I liked this approach... +1

@SaimonL

This comment has been minimized.

SaimonL commented Apr 20, 2018

+1
How do I pass params to my custom exception?

Ex:

raise Error::AlreadyAMember.new(user)

And then in the Error class

def initialize(response)
    @response = response
 end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment