Сделайте запрос Mysql, который находит данные непосредственно перед другим (в RoR) - PullRequest
0 голосов
/ 03 декабря 2010

Я делаю этот запрос к MySql

Image.find( :all,
     :conditions => ["created_at > ? && approved = 1", @image.created_at],
                            :order => "created_at DESC", :limit => 5)

Однако я хочу, чтобы изображения создавали непосредственно перед , в котором было создано данное изображение. Прямо сейчас он возвращает список изображений из верхней части списка, которые были созданы задолго до этого изображения. Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2010

Мое решение больше похоже на взлом, но я не уверен в лучшем. Я установил: order => "creat_at ASC" ... и затем перевернул полученный массив, и получил ответ, который я хотел. Хмм.

0 голосов
/ 03 декабря 2010

Ваш текущий запрос найдет любые изображения новее, чем @image, потому что вы используете>. Вам нужно будет решить, в какой диапазон вы хотите попасть. Какой период времени вы считаете «незадолго до этого»? Минуты? Секунды?

Чтобы найти все изображения, созданные в течение 5 минут после @image, попробуйте:

Image.find(:all, :conditions => ["(created_at > ? and created_at < ?) and approved = 1", @image.created_at.advance(:minutes => -5), @image.created_at]) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...