2011-07-29 21 views
5

Tôi muốn biết nếu có thể trong đường ray để thực hiện nhiều cập nhật và sáng tạo trong một giao dịch.Tạo và cập nhật nhiều mô hình theo một giao dịch

Tôi muốn tạo không. của Products từ bất kỳ mảng nào. Nhưng đối với mỗi sản phẩm tôi cũng cần phải tạo ra CompanyCategory cho nó.

Vì vậy, ý tưởng là như thế này

-- Start a transaction 
//create a company 
//create a category 
while product_list 
{ 
    //create a product with company and category created above 
} 
-- end a transcation 

Vì vậy, nếu bất kỳ của việc tạo ra thất bại tôi muốn updation/sáng tạo trước đó để rollback.

Trả lời

10
begin 
    ActiveRecord::Base.transaction do 
    # create a company 
    # create a category 
    while product_list 
    { 
     # create a product with company and category created above 
    } 
    end 
rescue => e 
    # something went wrong, transaction rolled back 
end 
+0

Cảm ơn đây là những gì tôi đang tìm kiếm ... –

+1

Bằng cách nào lệnh chúng tôi sử dụng để khôi phục giao dịch? –

+1

tăng ActiveRecord :: Rollback trong một giao dịch sẽ gây ra một rollback. (Ngoại lệ này sẽ không lan truyền ngoài khối giao dịch, do đó bạn không cần phải nắm bắt nó) –

Các vấn đề liên quan