Я только начал использовать 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]
набор данных.
Я считаю, что этот способ не самая элегантная реализация поведения "обновить или вставить".
Как это сделать?