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:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-11-15 01:42:22 +0300
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-11-17 20:10:13 +0300
commit0aac2e0706cd767993148826d723aa3641cbb2a4 (patch)
treed3f1708529146be7d3f27fd2227c96068062f37a /app/models/concerns/subscribable.rb
parent346f58249242c0ccf278175c78fc000976912771 (diff)
Allow subscriptions to be created without a project
Diffstat (limited to 'app/models/concerns/subscribable.rb')
-rw-r--r--app/models/concerns/subscribable.rb21
1 files changed, 15 insertions, 6 deletions
diff --git a/app/models/concerns/subscribable.rb b/app/models/concerns/subscribable.rb
index 5f2725a6d7f..0723db548d8 100644
--- a/app/models/concerns/subscribable.rb
+++ b/app/models/concerns/subscribable.rb
@@ -12,7 +12,7 @@ module Subscribable
has_many :subscriptions, dependent: :destroy, as: :subscribable
end
- def subscribed?(user, project)
+ def subscribed?(user, project = nil)
if subscription = subscriptions.find_by(user: user, project: project)
subscription.subscribed
else
@@ -27,20 +27,22 @@ module Subscribable
end
def subscribers(project)
- subscriptions.where(project: project, subscribed: true).map(&:user)
+ subscriptions_available(project).
+ where(subscribed: true).
+ map(&:user)
end
- def toggle_subscription(user, project)
+ def toggle_subscription(user, project = nil)
find_or_initialize_subscription(user, project).
update(subscribed: !subscribed?(user, project))
end
- def subscribe(user, project)
+ def subscribe(user, project = nil)
find_or_initialize_subscription(user, project).
update(subscribed: true)
end
- def unsubscribe(user, project)
+ def unsubscribe(user, project = nil)
find_or_initialize_subscription(user, project).
update(subscribed: false)
end
@@ -49,6 +51,13 @@ module Subscribable
def find_or_initialize_subscription(user, project)
subscriptions.
- find_or_initialize_by(user_id: user.id, project_id: project.id)
+ find_or_initialize_by(user_id: user.id, project_id: project.try(:id))
+ end
+
+ def subscriptions_available(project)
+ t = Subscription.arel_table
+
+ subscriptions.
+ where(t[:project_id].eq(nil).or(t[:project_id].eq(project.try(:id))))
end
end