回答編集履歴
1
あ
test
CHANGED
@@ -9,3 +9,27 @@
|
|
9
9
|
とやればいいですかね。
|
10
10
|
|
11
11
|
とりあえずas_jsonがキモです。
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
すみませんうろ覚えで調べてました。
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
|
19
|
+
Post.joins("inner join posts as self_posts").group("posts.id").order("posts.like_count").select("sum(self_posts.like_count>posts.like_count)+1 AS rank,posts.like_count,posts.id").as_json
|
20
|
+
|
21
|
+
```
|
22
|
+
|
23
|
+
これでどうでしょう。
|
24
|
+
|
25
|
+
解説は自己結合(自分を含めた全てのレコードと結合レコード数はn*nになります)
|
26
|
+
|
27
|
+
して、自分より小さいlike_countを数え上げて1を足しています。
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
正直数が増えてくると(数十万件レベル)すごく重いです。
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
重くなる場合は[Redis](http://qiita.com/yokozawa/items/aae59b53897ca12f7064)を使って実装することをオススメします。
|