Skip to content

Instantly share code, notes, and snippets.

@gogogarrett
Last active December 14, 2015 12:28
Show Gist options
  • Select an option

  • Save gogogarrett/5086052 to your computer and use it in GitHub Desktop.

Select an option

Save gogogarrett/5086052 to your computer and use it in GitHub Desktop.
Refactor bad methods..into one much smaller method.
def can_upload_awards?
self.secondary_roles.each do |role|
return true if role.can_upload_awards?
end
false
end
def can_shop?
self.secondary_roles.each do |role|
return true if role.can_shop?
end
false
end
def can_nominate?
self.secondary_roles.each do |role|
return true if role.can_nominate?
end
false
end
def can_give_additional_award?
self.secondary_roles.each do |role|
return true if role.can_give_additional_award?
end
false
end
def can_review?
self.secondary_roles.each do |role|
return true if role.can_review?
end
false
end
def can_view_initiative_details?
self.secondary_roles.each do |role|
return true if role.can_view_initiative_details?
end
false
end
%w/can_upload_awards can_shop
can_nominate can_give_additional_award
can_review can_view_initiative_details/.each do |meth_name|
define_method "#{meth_name}?" do
self.secondary_roles.any?{|x| x.send( "#{meth_name}?" ) }
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment