【发布时间】:2012-03-19 11:06:29
【问题描述】:
我刚开始在一个非常小的 Sinatra 应用程序中使用 Sequel。由于我只有一个 DB 表,因此我不需要使用模型。
我想更新一条记录(如果存在)或插入一条新记录(如果不存在)。我想出了以下解决方案:
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] 数据集。
我相信这种方式并不是“更新或插入”行为的最优雅的实现方式。
应该怎么做?
【问题讨论】: