Я пытаюсь использовать транзакции AR, чтобы убедиться, что обе записи или ни одна не создана. У меня есть фотомодель и модель Post, которая делает фотографию. Я хочу либо создать оба, либо ни одного. Мой код выглядит так:
class Post < ActiveRecord::Base
validates :photo, :body, presence: true
def self.create_from_upload(photo: nil, body: nil)
self.transaction do
photo = Photo.create(photo: photo)
post = Post.create(photo: photo, body: body)
end
post
end
end
Здесь фотография представляет собой загруженный файл из формы, а тело представляет собой строку. Если передается фотография, но не строка тела, создается фотография, а публикация - нет, но транзакция не уничтожает фотографию
Почему транзакция не удаляет запись фотографии?