Właśnie zacząłem używać Sequel w naprawdę małej aplikacji Sinatra. Ponieważ mam tylko jedną tabelę DB, nie muszę używać modeli.Jak zaktualizować lub wstawić na Sequel dataset?
Chcę zaktualizować rekord, jeśli istnieje, lub wstawić nowy rekord, jeśli nie istnieje. I wymyślił następujące rozwiązanie:
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
Gdzie $nums
jest DB[:numbers]
zestawu danych.
Uważam, że ten sposób nie jest najbardziej elegancką implementacją zachowania "zaktualizuj lub wstaw".
Jak należy to zrobić?
http://stackoverflow.com/questions/3647454/increment-counter-or-insert-row-in-one-statement-in-sqlite – Reactormonk