summaryrefslogtreecommitdiff
path: root/app/models/user_team_project_relationship.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/user_team_project_relationship.rb')
-rw-r--r--app/models/user_team_project_relationship.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/app/models/user_team_project_relationship.rb b/app/models/user_team_project_relationship.rb
new file mode 100644
index 00000000000..4413c492a6d
--- /dev/null
+++ b/app/models/user_team_project_relationship.rb
@@ -0,0 +1,24 @@
+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) }
+
+ 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