summaryrefslogtreecommitdiff
path: root/app/models/user.rb
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-03-05 09:27:06 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-03-05 09:27:06 +0200
commit9bb35e7e59c79031544b4b52516723a13d3bd452 (patch)
tree14a8c2ee2b8733390b73b5117dccaf38de5bd50c /app/models/user.rb
parent3a09f02e11679bb727d0ced94b88c1f5435a3299 (diff)
downloadgitlab-ce-9bb35e7e59c79031544b4b52516723a13d3bd452.tar.gz
Prevent app crash if team owner removed
Diffstat (limited to 'app/models/user.rb')
-rw-r--r--app/models/user.rb47
1 files changed, 35 insertions, 12 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index cd0754d7816..babf00e8052 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -46,10 +46,35 @@ class User < ActiveRecord::Base
attr_accessor :force_random_password
+ #
+ # Relations
+ #
+
# Namespace for personal projects
- has_one :namespace, dependent: :destroy, foreign_key: :owner_id, class_name: "Namespace", conditions: 'type IS NULL'
+ has_one :namespace,
+ dependent: :destroy,
+ foreign_key: :owner_id,
+ class_name: "Namespace",
+ conditions: 'type IS NULL'
+
+ # Profile
+ has_many :keys, dependent: :destroy
+
+ # Groups
+ has_many :groups, class_name: "Group", foreign_key: :owner_id
+
+ # Teams
+ has_many :own_teams,
+ class_name: "UserTeam",
+ foreign_key: :owner_id,
+ dependent: :destroy
+
+ has_many :user_team_user_relationships, dependent: :destroy
+ has_many :user_teams, through: :user_team_user_relationships
+ has_many :user_team_project_relationships, through: :user_teams
+ has_many :team_projects, through: :user_team_project_relationships
- has_many :keys, dependent: :destroy
+ # Projects
has_many :users_projects, dependent: :destroy
has_many :issues, dependent: :destroy, foreign_key: :author_id
has_many :notes, dependent: :destroy, foreign_key: :author_id
@@ -57,18 +82,16 @@ class User < ActiveRecord::Base
has_many :events, dependent: :destroy, foreign_key: :author_id, class_name: "Event"
has_many :assigned_issues, dependent: :destroy, foreign_key: :assignee_id, class_name: "Issue"
has_many :assigned_merge_requests, dependent: :destroy, foreign_key: :assignee_id, class_name: "MergeRequest"
+ has_many :projects, through: :users_projects
- has_many :groups, class_name: "Group", foreign_key: :owner_id
- has_many :recent_events, class_name: "Event", foreign_key: :author_id, order: "id DESC"
-
- has_many :projects, through: :users_projects
-
- has_many :user_team_user_relationships, dependent: :destroy
-
- has_many :user_teams, through: :user_team_user_relationships
- has_many :user_team_project_relationships, through: :user_teams
- has_many :team_projects, through: :user_team_project_relationships
+ has_many :recent_events,
+ class_name: "Event",
+ foreign_key: :author_id,
+ order: "id DESC"
+ #
+ # Validations
+ #
validates :name, presence: true
validates :email, presence: true, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/ }
validates :bio, length: { within: 0..255 }