Skip to content

Instantly share code, notes, and snippets.

@uhhuhyeah
Created April 4, 2012 21:25
Show Gist options
  • Save uhhuhyeah/2305795 to your computer and use it in GitHub Desktop.
Save uhhuhyeah/2305795 to your computer and use it in GitHub Desktop.
Metaprogramming eg
# Permission based relations
# define admins, uploaders and guests associations via users
%w(admins uploaders guests).each do |method_name|
define_method(method_name) { self.memberships.where(role: method_name.singularize).collect(&:user) }
end
## vs...
def admins
self.memberships.where(role: :admin).collect(&:user)
end
def uploaders
self.memberships.where(role: :upload).collect(&:user)
end
def guests
self.memberships.where(role: :guest).collect(&:user)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment