2012-11-08 3 views
0

У меня есть модель, из которой я хочу вытащить случайную запись, соответствующую определенным критериям. Например: дайте мне случайную запись из таблицы Thing, где column_name = true.Rails Active Record Query - найти случайную запись, которая соответствует условию

Чтобы получить случайную запись из модели я могу сделать следующее:

Thing.offset(rand(Thing.count)).first 

, и я хочу, чтобы объединить, что с запросом:

Thing.where("column_name = ?", true).all 

Это не работает:

counter = Thing.where("column_name = ?", true).count 
Thing.where("column_name = ?", true).offset(rand(counter)).first 

Любые идеи о том, как написать этот запрос, будут очень признательны.

+0

Каков фактический запрос, который вы пытаетесь достичь. У вас на самом деле есть таблица под названием «вещи» с логическим столбцом под названием «column_name». Насколько я понимаю, вы могли изменить эти имена значений при публикации, но поскольку вы не предоставили трассировку стека или какую-либо соответствующую информацию, ее очень сложно обеспечить вы помогаете –

+1

Просто попробовал свой код и адаптирован к моему приложению, он отлично работает ... что за ошибка? –

+0

Вы правы. Я попробовал еще раз, и он работает. Не уверен, что я ошибся в прошлый раз. – diasks2

ответ

0

Это должно сделать это для вас:

counter = Thing.where("column_name = ?", true).count 
    Thing.where("column_name = ?", true).limit("#{rand(counter)}, 1").first 

возвращение на одну строку, которая считывается откуда-то из таблицы.

 Смежные вопросы

  • Нет связанных вопросов^_^