Обновите массив объектов с помощью CouchRest, Rails

Я пытаюсь обновить параметр в коллекции объектов с помощью Rails, CouchRest.

Это то, что я делаю в настоящее время,

class User
   property :country
   property :some_flag
end

@users = User.by_country(:key => 'country-name')
@users.each do |user|
  user.update_attributes({:some_flag => 'true'})
end

Всякий раз, когда update_attributes терпит неудачу для объекта пользователя, я хочу, чтобы вся транзакция была отменена. Как я могу достичь этого?

Использую CouchDB. Rails, CouchRest и Не с использованием ActiveRecord.


person Prasanna    schedule 01.11.2012    source источник


Ответы (1)


CouchDB явно не поддерживает транзакцию, но есть что-то, называемое «массовым обновлением», которое может помочь:

http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API#Modify_Multiple_Documents_With_a_Single_Request

Пример данных для обновления:

{
  "all_or_nothing": true,
  "docs": [
    {"_id": "0", "_rev": "1-62657917", "integer": 10, "string": "10"},
    {"_id": "1", "_rev": "2-1579510027", "integer": 2, "string": "2"},
    {"_id": "2", "_rev": "2-3978456339", "integer": 3, "string": "3"}
  ]
}
person rewritten    schedule 01.11.2012