Как выбрать одну случайную запись для каждого пользователя, но упорядочить массив по последней записи pr.user.
Если Foo загрузит новую картину, я бы хотел выбрать одну случайную запись из foo.Таким образом, пользователь, загружающий 10 картин, не будет монополизировать все пространство на главной странице, но все равно получит слот в верхней части страницы.
Вот как я это сделал при работе с Rails 2.xна MySQL.
@paintings = Painting.all.reverse
first_paintings = []
@paintings.group_by(&:user_id).each do |user_id, paintings|
first_paintings << paintings[rand(paintings.size-1)]
end
@paintings = (first_paintings + (Painting.all - first_paintings).reverse).paginate(:per_page => 9, :page => params[:page])
Приведенный выше пример генерирует много SQL-запросов и неправильно оптимизирован.Как бы вы справились с этим, когда Rails 3.1 работает на PostgreSQL?У меня 7000 записей ..