【rails】【ruby】ActiveRecordでcount(*)の結果をsortして上位をリストアップする方法をいけてないコードで書いてみた!
なかなかやったことがなかったので備忘録がてらにメモ。
(あまり良いコードではないのは重々承知なので、やり方として覚えるという意味で。。。)
やりたかった事としては
model側
scope :tweet_rankings, ->(office_id, date=Date.today){ select("users.*, count(post_tweets.get_user_id) AS ranking_count") .joins(:post_tweets) .where('users.office_id=?',office_id) .where('post_tweets.created_at BETWEEN ? AND ?',date.beginning_of_month,date.end_of_month.next.to_date) .group('post_tweets.users.id') .order("ranking_count DESC") .limit(3) }
contorller側
@month_all_ranking_users = User.tweet_rankings(current_user.office_id)