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)
希望它能帮到你。
- 使用dm-accepts_nested_attributes和dm-is-tree在rails中的2个模型的嵌套表单
- 通过DataMapper从SQLite内存DB中没有这样的表错误
- 使用DataMapper get在Rails3控制器中处理404的最佳方法
- 有没有使用游标或智能提取的Ruby ORM?
- 无法在Windows上加载此类文件 – do_sqlite3 / 2.0 / do_sqlite3
- 使用DataMapper而不是ActiveRecord
- 使用RSpec测试Datamapper模型
- 如何告诉DataMapper对DateTime属性使用“timestamp with time zone”?
- 使用Postgresql在Datamapper中像(ilike)一样不区分大小写