Есть ли способ абстрагировать различные формы ранда / случайного в разных базах данных? - PullRequest
0 голосов
/ 17 января 2012

Игнорируя неэффективность запроса, существует ли существующая оболочка Rails для абстрагирования различий между rand() между базами данных?

MySQL:

User.first(order: 'random()')

Postgres:

User.first(order: 'rand()')

Я могу создать свою собственную константу RAND_STR, но мне было интересно, если она уже существует?

Обратите внимание - это не вопрос эффективности

Я знаю, что запрос неэффективен, мне просто интересно узнать об абстракции

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Я уверен, что раньше у меня была эта проблема, но теперь она, кажется, исчезла. И SQLlite, и Postgres принимают RANDOM(). Не уверен, что это дело рук Rails, но по какой-то причине это сейчас исправлено.

0 голосов
/ 17 января 2012

Вы можете сделать что-то вроде User.offset(rand(User.count)).first, но это приведет к выполнению двух запросов.Кроме этого, у Rails нет встроенного способа сделать это, о котором я знаю.

См. Rails 3: получить случайную запись

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