SQL文をメソッドとして定義したい
SQL文をメソッドとして定義したいです。
そもそもそれが可能なのかわかりませんが、よろしくお願いいたします。
以下は、いいねのついた記事を多い順にデータベースから取り出す処理になります。
コントローラーに定義しています。
@like_trend_posts = Post.joins("left join likes on posts.id = likes.post_id") .group("posts.id").order(Arel.sql("count(likes.id) desc"))
上記の、次のSQL文をメソッドとして定義し、繰り返し使えるようにしたいです。
joins("left join likes on posts.id = likes.post_id") .group("posts.id").order(Arel.sql("count(likes.id) desc"))
試したこと
Postモデルに以下のように定義してみました。
def like_trend_sql joins("left join likes on posts.id = likes.post_id") .group("posts.id").order(Arel.sql("count(likes.id) desc")) end
コントローラーにも以下のように定義してみました。
private def like_trend_sql joins("left join likes on posts.id = likes.post_id") .group("posts.id").order(Arel.sql("count(likes.id) desc")) end
そして、コントローラーにて、下記のように書き換えて使用してみました。
@like_trend_posts = Post.like_trend_sql
結果、「like_trend_sql」メソッドは定義されていないとのエラーが出ました。
定義の仕方がそもそも合っているのかわかりません。
お分かりになられる方がいらっしゃるのであれば、ぜひご教授願います。よろしくお願いいたします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/31 01:22