Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/users_star_project.rb')
-rw-r--r--app/models/users_star_project.rb16
1 files changed, 15 insertions, 1 deletions
diff --git a/app/models/users_star_project.rb b/app/models/users_star_project.rb
index 9a514b82506..6cffc97822d 100644
--- a/app/models/users_star_project.rb
+++ b/app/models/users_star_project.rb
@@ -3,7 +3,7 @@
class UsersStarProject < ApplicationRecord
include Sortable
- belongs_to :project, counter_cache: :star_count
+ belongs_to :project
belongs_to :user
validates :user, presence: true
@@ -12,6 +12,10 @@ class UsersStarProject < ApplicationRecord
alias_attribute :starred_since, :created_at
+ after_create :increment_project_star_count
+ after_destroy :decrement_project_star_count
+
+ scope :with_active_user, -> { joins(:user).merge(User.with_state(:active)) }
scope :order_user_name_asc, -> { joins(:user).merge(User.order_name_asc) }
scope :order_user_name_desc, -> { joins(:user).merge(User.order_name_desc) }
scope :by_project, -> (project) { where(project_id: project.id) }
@@ -35,4 +39,14 @@ class UsersStarProject < ApplicationRecord
joins(:user).merge(User.search(query, use_minimum_char_limit: false))
end
end
+
+ private
+
+ def increment_project_star_count
+ Project.update_counters(project, star_count: 1) if user.active?
+ end
+
+ def decrement_project_star_count
+ Project.update_counters(project, star_count: -1) if user.active?
+ end
end