2009-06-09 35 views
5

Tôi đang sử dụng đá quý kẹp giấy để đính kèm tệp vào mô hình. Khi bạn tải lên một tệp bằng Paperclip, tệp sẽ được lưu CHỈ khi mô hình được lưu. Do đó, nếu mô hình không hợp lệ, tệp đã tải lên sẽ không được lưu. Có cách nào để lưu tạm thời tệp đã tải lên để người dùng không phải tải lên cùng một tệp nếu mô hình không hợp lệ không?Với đá quý Rails Paperclip, cách tạm thời lưu tệp đã tải lên nếu mô hình không hợp lệ

Trả lời

2

Xác định một phương pháp before_save để kiểm tra nếu đối tượng là hợp lệ, nếu không lưu các tập tin vào đĩa, cung cấp cho nó một cái tên duy nhất (tạo ra một số hash)

Đặt rằng trong biểu mẫu bạn gửi lại trong một ẩn lĩnh vực

Xóa lĩnh vực tải lên theo hình thức

Bây giờ tại các chi nhánh khác của việc kiểm tra before_save phương pháp nếu có một previous_upload hidden_field hay tuy nhiên bạn tên nó Nếu có tải hình ảnh và gán nó vào papercli thuộc tính p, nó có thể tìm ra phần còn lại

attr_accessor :previous_upload 

def before_save 
    if valid? 
    if previous_upload 
     paperclip_file = #Load paperclip_file from /tmp 
    else 
     previous_upload = nil 
    end 
    else 
    previous_upload = "Some unique key for each upload like ip and time or such" 
    # Save paperclip_file with name previous_upload to /tmp 
    end 
end 
+0

Cảm ơn ý tưởng. Tôi se thử no :) – gsmendoza

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