Проект находится вСортировку на основе отношений has_many
http://code-dojo.herokuapp.com/
и
https://github.com/TylerSangster/Code-Dojo
У меня есть сайт обзор ресурсов со следующими моделями.
class Resource < ActiveRecord::Base
has_many :reviews
class Review < ActiveRecord::Base
belongs_to :resource
Я добавил сортировку ресурсов по названию, созданному по цене и стоимости. Я также хотел бы отсортировать по самому высокому ресурсу.
Как я могу создать сортировку через review.score?
РЕДАКТИРОВАТЬ контроллер ресурсов
def index
@resources = Resource.where(status: true).includes([:providers, :subjects, :formats, :reviews])
@resources = @resources.tagged_with(params[:tag]) if params[:tag]
@resources = @resources.order(sort_column + " " + sort_direction)
@resources = @resources.paginate(:page => params[:page], :per_page => 10)
respond_with @resources
end
частные методы
def sort_column
Resource.column_names.include?(params[:sort]) ? params[:sort] : "name"
end
def sort_direction
%w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
end
application.rb
def sortable(column, title = nil)
title ||= column.titleize
css_class = column == sort_column ? "current #{sort_direction}" : nil
direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc"
link_to title, {:sort => column, :direction => direction}, {:class => css_class}
end
index.html.erb
<li><div class="btn btn-default"><%= sortable "created_at", "Most Recent" %></div></li>
<li><%= link_to "Highest Rated", resources_path, class:"btn btn-default" %></li>
<li><div class="btn btn-default"><%= sortable "cost" %></div></li>
Если у каждого ресурса много отзывов, как вы хотите заказать их с помощью 'review.score', так как в каждом обзоре есть много из них? Возможно, суммой? – lurker