volontariat/voluntary_scholarship

View on GitHub
app/models/scholarship/team.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Scholarship
  class Team < ActiveRecord::Base
    KINDS = %w(sponsored voluntary)
    
    self.table_name = 'scholarship_teams'
    
    include Applicat::Mvc::Model::Resource::Base
    
    has_many :memberships, class_name: 'Scholarship::TeamMembership'
    has_many :members, class_name: 'User', through: :memberships, source: 'user'
    
    validates :name, presence: true, uniqueness: true
    validates :kind, presence: true, inclusion: { in: KINDS }
    
    attr_accessible :name, :text, :kind, :github_handle, :twitter_handle
    
    attr_accessor :leader
    
    after_create :create_team_leader_membership
    
    extend FriendlyId
    friendly_id :name, use: :slugged
    
    private
    
    def create_team_leader_membership
      membership = memberships.new(roles: [:team_leader])
      membership.user_id = leader.try(:id)
      membership.save!
      membership.accept!
    end
  end
end