Рельсы случайные ActiveRecord при разбиении на страницы - PullRequest
0 голосов
/ 13 сентября 2011

Я пытаюсь отобразить серию фотографий в случайном порядке, разбивая их на страницы. Проблема в том, что на каждой странице нумерации страниц генерируется случайный массив; таким образом, пользователь может видеть фотографии на странице 2, которые он уже видел на странице 1. Хромой. Вот мой контроллер:

def index
  @photos = Photo.order('random()').paginate(:per_page => 12, :page => params[:page])
end

Я долго об этом думал и не могу придумать никакого разумного решения. Это легко выполнимо? Кажется, это довольно распространенная функция, но мне, возможно, придется отбросить случайную вещь. Мысли? * * 1004

1 Ответ

1 голос
/ 13 сентября 2011

Вы можете ввести некоторую упорядоченность в случайность, указав начальное число.Используя это, последующие вызовы дадут вам повторяемый порядок.

Каждая база данных предлагает свой способ указать начальное значение.Например, в MySQL

@photos = Photo.order('rand(0.5)').paginate(:per_page => 12, :page => params[:page])

Здесь 0,5 будет начальным числом для функции rand().

Аналогично, у Postgres есть функция setseed().Я не уверен, какую базу данных вы используете.В любом случае, я надеюсь, что вы поняли идею.

...