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.

Show comment
Hide comment
@panthomakos

panthomakos Sep 20, 2011

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

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.

Show comment
Hide comment
@aruprakshit

aruprakshit Jul 13, 2015

I liked this approach... +1

aruprakshit commented Jul 13, 2015

I liked this approach... +1

@SaimonL

This comment has been minimized.

Show comment
Hide comment
@SaimonL

SaimonL 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

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