2011-09-13 56 views
0

我試圖以隨機順序顯示一系列照片,同時分頁。麻煩的是,在分頁的每一頁上,隨機數組被重新生成;因此用戶可以在第2頁上看到他已經在第1頁上看到的照片。跛腳。這裏是我的控制器:Rails隨機ActiveRecord雖然分頁

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

我一直在想它一段時間,想不出任何合理的解決方案。這很容易做到嗎?這似乎是一個非常常見的功能,但我可能只是不得不拋棄隨機的東西。思考?

回答

1

你可以通過指定一個種子來引入一些隨機性的有序性。使用這個,隨後的調用會給你可重複的順序。

每個數據庫都提供了指定種子值的不同方式。例如,在MySQL中,

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

這裏0.5將是rand()函數的種子。

同樣,Postgres有setseed()函數。我不確定你使用的是什麼數據庫。無論如何,我希望你明白這個主意。