А как же:
SomeClass.transaction do
first_record = SomeClass.create(... vars ...)
second_record = SomeClass.create(... vars ...)
third_record = SomeClass.create(... vars ...)
second_record.update_attributes(:related_id=>first_record.id)
third_record.update_attributes(:related_id=>second_record.id)
end
Это создаст объекты и назначит идентификаторы в одной общей транзакции. Если это не удается, все записи должны быть откатаны, включая создание записей в первую очередь.