The \ - возможно, не работал, потому что вы передали весь материал с сервера строкой. Если это так, сначала вы должны убежать \, поэтому серверная программа также может обрабатывать его.
Или вы можете просто положить в и [] скобки.
Я не нашел идеального способа сделать это без использования как минимум двух запросов.
В следующем примере в качестве смещения используется случайно сгенерированное число (до текущего количества записей).
offset = rand(Model.count)
# Rails 4
rand_record = Model.offset(offset).first
# Rails 3
rand_record = Model.first(:offset => offset)
Честно говоря, я просто использовал ORDER BY RAND() или RANDOM() (в зависимости от базы данных). Это не проблема производительности, если у вас нет проблемы производительности.
Ваш пример кода начнет вести себя неточно после удаления записей (это будет несправедливо благоприятствовать элементам с более низкими идентификаторами)
Вероятно, вам лучше использовать случайные методы в вашей базе данных. Они различаются в зависимости от того, какую базу данных вы используете, но :order => "RAND()" работает для mysql, а :order => "RANDOM()" работает для postgres
Model.first(:order => "RANDOM()") # postgres example