rails3 работает в среде песочницы - PullRequest
0 голосов
/ 10 мая 2011

Есть ли способ включить / выключить среду sanbox для активной записи в рельсах?

Я разрабатываю приложение для рельсов. У меня есть случай, когда мне нужно загрузить данные из файлов XLS и CSV. Каждая строка таблицы вставляется в базу данных отдельно. Когда в какой-либо строке обнаруживается какая-либо ошибка, мне нужно отменить все ранее вставленные строки и показать сообщение об ошибке. Идеальным решением было бы «включить» среду песочницы для активной записи, вставить данные, а затем, если каждая строка правильная, выполнить предыдущие вставки «случайно», а затем «отключить» среду песочницы. Возможно ли это в рельсах?

1 Ответ

2 голосов
/ 10 мая 2011

Это зависит от того, сколько времени занимают эти вставки. Если вы не против блокировки базы данных на это время, вы можете использовать транзакции:

MyModel.transaction do
   objects.each do |object|
      object.attributes = values
      object.save!
   end
end

Транзакция сама спасает все исключения, и, если таковые возникают, все предыдущие сохранения откатываются.

...