Сделайте запрос Mysql, который находит данные непосредственно перед другим (в RoR)

0

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

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

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

Теги:

2 ответа

0

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

0

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

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

Image.find(:all, :conditions => ["(created_at > ? and created_at < ?) and approved = 1", @image.created_at.advance(:minutes => -5), @image.created_at]) 
  • 0
    Хорошо, скажем, есть четыре объекта, созданные в этом порядке: {img1, img2, img3, img4} ... тогда, если я сделаю запрос к img2, то я хочу, чтобы {img3 и img4] были возвращены в этом порядке. .. другими словами, те, которые были созданы сразу после объекта, в порядке их создания.
  • 0
    Ах да, извини, я неправильно понял. В этом случае, установив порядок на "selected_at asc", это будет сделано. (asc является значением по умолчанию, так что вы можете очистить его до «create_at», если хотите)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню