2

Sequel gem 有一个save“创建或更新记录”的方法。我正在尝试使用它来创建新记录,当不存在时,或更新现有记录的字段:

record = Records.where(:name => 'Dark Side of the Moon').first
record.save(:artist => "Pink Floyd")

这失败了,因为Records.where(:name => 'Dark Side of the Moon')返回 nil,而不是一个空的 Record 对象。本质上,我将此方法用作upsert,但它不能以这种方式工作,因为该save方法是模型实例方法。

我的问题是双重的:(1)正确的使用方式是什么save,以及(2)Sequel 是否有“更新”记录的方式?

4

2 回答 2

3

如果您有模型实例,则只能使用 Model#save。如果数据库中还没有模型实例(何时nil返回),您可以通过创建一个新模型实例来做到这一点。

record = Records[:name => 'Dark Side of the Moon'] || Records.new(:name => 'Dark Side of the Moon')
record.save(:artist => "Pink Floyd")
于 2013-04-07T15:08:46.577 回答
1

record.save(:artist => "Pink Floyd")对我不起作用,但是

record.artist = "Pink Floyd"
record.save

运作良好。这可能是 Sequel 中的错误4.16.0

于 2016-02-14T12:25:26.290 回答