質問編集履歴
1
質問したいこと、自分で調べたこと、現在起こっていることを追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,3 +1,26 @@
|
|
1
|
+
##質問したいこと
|
2
|
+
SQLで実行できたコードをruby on railsのコードに置き換えたいので、それを実現するためのアドバイスを頂きたいです。
|
3
|
+
|
4
|
+
##自分で調べたこと、実行したこと
|
5
|
+
[http://www.scuttle.io/](http://www.scuttle.io/)
|
6
|
+
こちらのサイトにSQLのコードを打ち込み、railsのコードに変換して、そのコードをcontrollerに貼って実行してみたところ、
|
7
|
+
|
8
|
+
```ここに言語を入力
|
9
|
+
ActiveRecord::StatementInvalid in Posts#index
|
10
|
+
|
11
|
+
SQLite3::SQLException: no such column: thanks.like_count: SELECT "post_comments"."user_id",
|
12
|
+
|
13
|
+
SUM("thanks"."like_count") AS sum_like_count FROM "post_comments" INNER JOIN "thanks" ON
|
14
|
+
|
15
|
+
"post_comments"."id" = "thanks"."post_comment_id" GROUP BY "post_comments"."user_id"
|
16
|
+
|
17
|
+
ORDER BY "sum_like_count" ASC LIMIT ?
|
18
|
+
```
|
19
|
+
|
20
|
+
というエラーが表示されています。
|
21
|
+
|
22
|
+
|
23
|
+
|
1
24
|
##実現したいこと
|
2
25
|
ruby on railsでポートフォリオを製作中です。そのポートフォリオでランキング機能を実装したいです。
|
3
26
|
ランキング機能の詳細ですが、記事を投稿し、他の人がその記事にコメントが出来ます。記事の投稿者はそのコメントが有益だと感じれば、ありがとうを押す事が出来ます。そのいいねを多く取得しているユーザーをランキング化したいです。
|
@@ -31,8 +54,12 @@
|
|
31
54
|
user_id = 1が4位になります。
|
32
55
|
|
33
56
|
##railsで置き換えたコード
|
34
|
-
PostComment.
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
57
|
+
PostComment.select(
|
58
|
+
[
|
59
|
+
:user_id, Arel::Nodes::NamedFunction.new('SUM', [Thank.arel_table[:like_count]]).as('sum_like_count')
|
60
|
+
]
|
61
|
+
).joins(
|
62
|
+
PostComment.arel_table.join(Thank.arel_table).on(
|
63
|
+
PostComment.arel_table[:id].eq(Thank.arel_table[:post_comment_id])
|
64
|
+
).join_sources
|
65
|
+
).order(:sum_like_count).group(:user_id).limit(4)
|