Ruby on Rails: Ordena usuários com base em avaliações médias com a maioria dos comentários?
Eu sou capaz de exibir os itens e seus comentários que estão dentro da loja. Como faço para obter os melhores itens com mais avaliações? Minhas revisões estão em outra tabela de banco de dados que loja e item.
Controlador
@shop = Shop.find(params[:id])
@item = Item.where(:shop_name => @shop.name)
Visão
<% @item.each do |u| %>
<%= u.reviews.average('rating') %>
<%= u.reviews.count %>
<% end %>
Existe um método fácil onde posso encomendar com base na classificação mais alta com a maioria das críticas ou algo assim? Ou talvez seja melhor separar a classificação mais alta e a maioria das resenhas e permitir que os usuários cliquem em um link para filtrar?
obrigado
EDITAR:
Então eu tenho umshop
, item
, review
mesa.
No meumodelo de itens
has_many :reviews, as: :reviewable
has_many :shops
No meumodelo de avaliações emodelo de lojas é
belongs_to :user
Na minha tabela de comentários, é definido assim quando um usuário revisa um item, ele adiciona um registro ao banco de dados e eu uso oaverage
de todos os registros associados a esse item e exibi-lo dentro da loja.