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/concerns/awardable.rb')
-rw-r--r--app/models/concerns/awardable.rb18
1 files changed, 9 insertions, 9 deletions
diff --git a/app/models/concerns/awardable.rb b/app/models/concerns/awardable.rb
index e830594af11..22e71c4fa13 100644
--- a/app/models/concerns/awardable.rb
+++ b/app/models/concerns/awardable.rb
@@ -13,26 +13,26 @@ module Awardable
end
class_methods do
- def awarded(user, name = nil)
+ def awarded(user, name = nil, base_class_name = base_class.name, awardable_id_column = :id)
award_emoji_table = Arel::Table.new('award_emoji')
inner_query = award_emoji_table
.project('true')
.where(award_emoji_table[:user_id].eq(user.id))
- .where(award_emoji_table[:awardable_type].eq(base_class.name))
- .where(award_emoji_table[:awardable_id].eq(self.arel_table[:id]))
+ .where(award_emoji_table[:awardable_type].eq(base_class_name))
+ .where(award_emoji_table[:awardable_id].eq(self.arel_table[awardable_id_column]))
inner_query = inner_query.where(award_emoji_table[:name].eq(name)) if name.present?
where(inner_query.exists)
end
- def not_awarded(user, name = nil)
+ def not_awarded(user, name = nil, base_class_name = base_class.name, awardable_id_column = :id)
award_emoji_table = Arel::Table.new('award_emoji')
inner_query = award_emoji_table
.project('true')
.where(award_emoji_table[:user_id].eq(user.id))
- .where(award_emoji_table[:awardable_type].eq(base_class.name))
- .where(award_emoji_table[:awardable_id].eq(self.arel_table[:id]))
+ .where(award_emoji_table[:awardable_type].eq(base_class_name))
+ .where(award_emoji_table[:awardable_id].eq(self.arel_table[awardable_id_column]))
inner_query = inner_query.where(award_emoji_table[:name].eq(name)) if name.present?
@@ -52,14 +52,14 @@ module Awardable
end
# Order votes by emoji, optional sort order param `descending` defaults to true
- def order_votes(emoji_name, direction)
+ def order_votes(emoji_name, direction, base_class_name = base_class.name, awardable_id_column = :id)
awardable_table = self.arel_table
awards_table = AwardEmoji.arel_table
join_clause = awardable_table
.join(awards_table, Arel::Nodes::OuterJoin)
- .on(awards_table[:awardable_id].eq(awardable_table[:id])
- .and(awards_table[:awardable_type].eq(base_class.name).and(awards_table[:name].eq(emoji_name))))
+ .on(awards_table[:awardable_id].eq(awardable_table[awardable_id_column])
+ .and(awards_table[:awardable_type].eq(base_class_name).and(awards_table[:name].eq(emoji_name))))
.join_sources
joins(join_clause).group(awardable_table[:id]).reorder(