DataMapper:创建新记录或更新现有记录

DataMapper是否提供了一种在不存在或更新现有记录时创建新记录的便捷方法? 我在API文档中找不到任何内容。

这就是我目前看来并不优雅的东西:

foo = Foo.get(id) if foo.nil? foo = Foo.create(#attributes...) else foo.update(#attributes...) end foo.save 

 Foo.first_or_create(:id=>id).update(attributes) 

要么

 (Foo.get(id) || Foo.new).update(attributes) 

我试试吧

 Foo.first_or_create(:id=>id).update(attributes) 

但有时会出错,所以我从这里找到一些提示: DataMapper Docs

现在我让我的代码像:

 Foo.first_or_create({:id=>id}, {:name => name}).update(:id => id, :name => name) 

希望它能帮到你。