diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2019-02-04 04:25:59 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-04 04:25:59 +0100 |
commit | 364f2ff9aa2b4bf601d68a12bce758aeb5530467 (patch) | |
tree | 6e47b26ef9148d3b88dd9748460d8cf51beac748 /app/models/tag.rb | |
parent | d14c276e58f0f223b0e4889d342a948c961081b2 (diff) |
Add featured hashtags to profiles (#9755)
* Add hashtag filter to profiles GET /@:username/tagged/:hashtag GET /api/v1/accounts/:id/statuses?tagged=:hashtag * Display featured hashtags on public profile * Use separate model for featured tags * Update featured hashtag counters on-write * Limit featured tags to 10
Diffstat (limited to 'app/models/tag.rb')
-rw-r--r-- | app/models/tag.rb | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/app/models/tag.rb b/app/models/tag.rb index 99830ae92..4373e967b 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -14,6 +14,7 @@ class Tag < ApplicationRecord has_and_belongs_to_many :accounts has_and_belongs_to_many :sample_accounts, -> { searchable.discoverable.popular.limit(3) }, class_name: 'Account' + has_many :featured_tags, dependent: :destroy, inverse_of: :tag has_one :account_tag_stat, dependent: :destroy HASHTAG_NAME_RE = '[[:word:]_]*[[:alpha:]_·][[:word:]_]*' @@ -23,6 +24,7 @@ class Tag < ApplicationRecord scope :discoverable, -> { joins(:account_tag_stat).where(AccountTagStat.arel_table[:accounts_count].gt(0)).where(account_tag_stats: { hidden: false }).order(Arel.sql('account_tag_stats.accounts_count desc')) } scope :hidden, -> { where(account_tag_stats: { hidden: true }) } + scope :most_used, ->(account) { joins(:statuses).where(statuses: { account: account }).group(:id).order(Arel.sql('count(*) desc')) } delegate :accounts_count, :accounts_count=, |