2013-06-02 2 views
0

Я делаю что-то вроде «контроля версий» загружаемого документа. Поэтому, когда я загружаю новый документ, я проверяю, есть ли в документе документ с тем же именем, и если есть, я также добавляю эту запись, но добавляю +1 к столбцу «версия». Однако мне нужно отобразить только последнюю версию документа для пользователя. Мои знания SQL довольно простые, поэтому я не могу понять, как сделать запрос, который должен выбрать все записи с одинаковыми значениями в столбце «имя», но захватить только строку с наибольшим значением в столбце «версия».SQL-запрос для функции «version-control»

Технология RoR. База данных SQLite.

Заранее благодарен!

+0

же имя или же содержание? что-то думать ... –

ответ

0

Это довольно простой, где выберите

YouModel.where(name: params[:name]).order("version DESC").limit(1) 
1

Вы можете использовать драгоценный камень, например papertrail. Это версии ActiveRecord моделей.

+0

Я не думаю, что есть необходимость в любом дополнительном камне здесь, я думаю, что есть способ сделать это с запросом средней сложности. –

+0

@OlegKiviljov: запрос средней сложности также превратит вашу схему в гигантский беспорядок с последствиями производительности, когда вы их меньше всего ожидаете, если вы закончите делать запросы, подобные тому, который был выделен Иваном. –

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