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

时间:2010-04-02 16:08:08

标签: ruby datamapper

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

这就是我目前看来并不优雅的地方:

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

我试试

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

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

现在我的代码就像:

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

希望它对你有所帮助。