订购从RoR随机生成的XML数据

时间:2009-12-17 04:13:52

标签: ruby-on-rails xml ruby

所以我在我的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

除了一件事之外,它的效果很好......它根据ID命令xml。如何让xml随机排序?

我可以简单地改变

@ridesall = Ride.find(:all)

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

由于

3 个答案:

答案 0 :(得分:1)

您使用的数据库是什么?您可能需要依赖RDBMS特定的随机函数。例如在mysql中

:order => 'rand()'

或在postgresql中

:order => 'random()'

答案 1 :(得分:1)

您可以随机播放阵列。这适用于任何类型的数据库。

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

注意:Array#shuffle是1.8.7的新增内容,因此如果使用Ruby 1.8.6则为require 'backports'

答案 2 :(得分:0)

@ridesall.sort_by { |x| rand() }也适用