Skip to content

Instantly share code, notes, and snippets.

@scalp42
Forked from panthomakos/group.rb
Last active August 29, 2015 14:20
Show Gist options
  • Save scalp42/05524b488d41072cd32e to your computer and use it in GitHub Desktop.
Save scalp42/05524b488d41072cd32e to your computer and use it in GitHub Desktop.
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment