2009-12-17 69 views
0

因此,我在我的RoR應用程序中生成XML數據以供外部消耗。在我的控制器的方法如下...訂購從RoR隨機生成的XML數據

def allOffers 
@ridesall = Ride.find(:all) 
respond_to do |format| 
    format.xml  
end 
end 

我有一個allOffers.xml.builder文件看起來像這樣...

xml.instruct! 
xml.rides do 
@ridesall.each do |ride| 
    xml.item("togive" => ride.togive, "totake" => ride.totake, "howlong" => ride.howlong, "isoffer" => ride.isoffer, "id" => ride.id, "contact" => ride.contact) 
    end 
end 

這個工程除了一件事偉大的.. .it會根據ID命令xml。我怎樣才能讓XML隨機訂購?

我可以簡單地改變

@ridesall = Ride.find(:all) 

@ridesall = Ride.find(:all, :order => :random) 

謝謝

回答

1

您使用了哪個數據庫?您可能需要依賴RDBMS特定的隨機函數。例如在MySQL

:order => 'rand()' 

或PostgreSQL的

:order => 'random()' 
1

您可以隨機播放該數組本身。這將適用於任何類型的數據庫。

@ridesall.shuffle.each do 
    #... 
end 

注:Array#shuffle是新的1.8.7,所以require 'backports'如果使用Ruby 1.8.6。

0

@ridesall.sort_by { |x| rand() }也可以工作