QA@IT
«回答へ戻る

回答を投稿

間違ってたらすいません。

おそらくこんな感じになるのではないでしょうか?

top_post_id = Fav.group(:post_id).order("count_all desc").count.first.first
Post.find(top_post_id)

これで一番お気に入りされているポストが求められると思います。

一行目は何をしているかというと、
まずFav内をpost_id毎に縛ります。
その後、それぞれが何個縛られたかを求めます。
そしてその個数を、降順に並べて、一番最初のpost_idを取ってくるという感じです。

二行になってしまいましたが、うまい方法があれば一行になるかもしれません。

あと気になったんですが、

has_many :favs

と書いてますが、Userは1つだけしかfavできないのであれば、

has_one :fav

の方がいいんじゃないでしょうか?

間違ってたらすいません。

おそらくこんな感じになるのではないでしょうか?

```rb
top_post_id = Fav.group(:post_id).order("count_all desc").count.first.first
Post.find(top_post_id)
```

これで一番お気に入りされているポストが求められると思います。

一行目は何をしているかというと、
まずFav内をpost_id毎に縛ります。
その後、それぞれが何個縛られたかを求めます。
そしてその個数を、降順に並べて、一番最初のpost_idを取ってくるという感じです。

二行になってしまいましたが、うまい方法があれば一行になるかもしれません。

あと気になったんですが、

```rb
has_many :favs
```
と書いてますが、Userは1つだけしかfavできないのであれば、

```rb
has_one :fav
```

の方がいいんじゃないでしょうか?