Я только начал использовать Sequel в действительно маленьком приложении Sinatra. Поскольку у меня есть только одна таблица БД, мне не нужно использовать модели.
Я хочу обновить запись, если она существует, или вставить новую запись, если это не так. Я придумал следующее решение:
rec = $nums.where(:number => n, :type => t)
if $nums.select(1).where(rec.exists)
rec.update(:counter => :counter + 1)
else
$nums.insert(:number => n, :counter => 1, :type => t)
end
Где $nums
- это набор данных DB[:numbers]
.
Я считаю, что этот способ - не самая элегантная реализация поведения "обновление или вставка".
Как это сделать?