Упорядочивание данных XML, случайно сгенерированных из RoR - PullRequest
0 голосов
/ 17 декабря 2009

Итак, я генерирую данные XML в своем приложении RoR для использования внешним источником. Метод в моем контроллере выглядит следующим образом ...

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

Это прекрасно работает, за исключением одной вещи ... он заказывает XML на основе идентификатора. Как я могу получить xml для случайного заказа?

Могу ли я просто изменить

@ridesall = Ride.find(:all)

до

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

Спасибо

Ответы [ 3 ]

1 голос
/ 17 декабря 2009

Вы можете перемешать сам массив. Это будет работать для любой базы данных.

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

Примечание: Array#shuffle является новым для 1.8.7, поэтому require 'backports' при использовании Ruby 1.8.6.

1 голос
/ 17 декабря 2009

Какую базу данных вы используете? Вам, вероятно, придется полагаться на случайную функцию, специфичную для СУБД. Например в mysql

:order => 'rand()'

или в postgresql

:order => 'random()'
0 голосов
/ 17 декабря 2009

@ridesall.sort_by { |x| rand() } тоже работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...