ユーザーが投稿したトピックをランク付けする方法を作成したいと考えています。私は今これを使用しています:
Topic.select("topics.*, (((topics.likes_count - 1) / POW(((EXTRACT(EPOCH FROM (now()-topics.created_at)) / 3600)::integer + 2), 1.5))) AS popularity").order("popularity DESC")
そして、トピックごとのコメント数をそれに追加する方法を考えています。
トピックス.rb
has_many :comments, as: :commentable, dependent: :destroy
has_many :commenters, through: :comments
コメント.rb
belongs_to :user
belongs_to :commentable, polymorphic: true, touch: true
belongs_to :commenter, class_name: 'User', foreign_key: :user_id
user.rb
has_many :comments, :dependent => :destroy
has_many :topics #destroyed via the UserDeletionService