summaryrefslogtreecommitdiff
path: root/app/models/user_team_project_relationship.rb
blob: 991510be9368d6e2d13e5c8bb1cc8620d9665848 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# == Schema Information
#
# Table name: user_team_project_relationships
#
#  id              :integer          not null, primary key
#  project_id      :integer
#  user_team_id    :integer
#  greatest_access :integer
#  created_at      :datetime         not null
#  updated_at      :datetime         not null
#

class UserTeamProjectRelationship < ActiveRecord::Base
  attr_accessible :greatest_access, :project_id, :user_team_id

  belongs_to :user_team
  belongs_to :project

  validates :project,   presence: true
  validates :user_team, presence: true
  validate :check_greatest_access

  scope :with_project, ->(project){ where(project_id: project.id) }

  def team_name
    user_team.name
  end

  def human_max_access
    UserTeam.access_roles.key(greatest_access)
  end

  private

  def check_greatest_access
    errors.add(:base, :incorrect_access_code) unless correct_access?
  end

  def correct_access?
    return false if greatest_access.blank?
    return true if UsersProject.access_roles.has_value?(greatest_access)
    false
  end
end