当DataStationper不存在或更新现有记录时,它是否提供了创建新记录的便捷方法?我在API文档中找不到任何内容。
这就是我目前看来并不优雅的地方:
foo = Foo.get(id)
if foo.nil?
foo = Foo.create(#attributes...)
else
foo.update(#attributes...)
end
foo.save
答案 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)
希望它对你有所帮助。