discourse/app/models/category_featured_user.rb

32 lines
809 B
Ruby

class CategoryFeaturedUser < ActiveRecord::Base
belongs_to :category
belongs_to :user
def self.max_featured_users
5
end
def self.feature_users_in(category)
# Figure out major posters in the category
user_counts = exec_sql "
SELECT p.user_id,
COUNT(*) AS category_posts
FROM posts AS p
INNER JOIN topics AS ft ON ft.id = p.topic_id
WHERE ft.category_id = :category_id
GROUP BY p.user_id
ORDER BY category_posts DESC
LIMIT :max_featured_users
", category_id: category.id, max_featured_users: max_featured_users
transaction do
CategoryFeaturedUser.delete_all ['category_id = ?', category.id]
user_counts.each do |uc|
create(category_id: category.id, user_id: uc['user_id'])
end
end
end
end