Skip to content

Instantly share code, notes, and snippets.

@eternal44
Last active August 26, 2015 18:05
Show Gist options
  • Save eternal44/db8b1045c1adfc242b84 to your computer and use it in GitHub Desktop.
Save eternal44/db8b1045c1adfc242b84 to your computer and use it in GitHub Desktop.
lity.herokuapp.com - complex authorizations
module GroupHelper
def admin(group)
true if group.memberships.admin.where(user_id: current_user.id).present?
end
def regular(group)
true if group.memberships.member.where(user_id: current_user.id).present?
end
end
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :group
validates :user_id, presence: true
validates :group_id, presence: true
validates :group_role, inclusion: { in: %w(Admin Regular),
messge: "%(value) is not a valid membership type" }
# used in group_helper.rb
scope :admin, -> { where(group_role: 'Admin') }
scope :member, -> {where(group_role: 'Admin' || 'Regular' )}
def admin?
group_role == "Admin"
end
def regular?
group_role == "Admin" || "Regular"
end
end
<div class="container">
<h1><%= @group.group_name %></h1>
<% if admin(@group) %>
<%= link_to 'Manage Group Memberships', edit_group_path(@group) %> |
<% end %>
<%= link_to 'Back', :back %>
<div class="row">
<% if regular(@group) %>
<%= render partial: "archives/form" %>
<% end %>
<% if @membership.present? %>
<div class="pull-left">
<h3>Members in the group</h3>
<% @membership.each do |membership| %>
<%= membership.user.first_name %>
<%= membership.user.last_name %>
-
<%= membership.group_role %>
<%= link_to 'Show', user_path(membership.user.id) %>
<% if admin(@group) %>
<%= link_to ' | Edit Group Role', edit_group_membership_path(@group, membership) %>
<% end %>
</br>
<% end %>
</div>
<% end %>
</div>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment