2012-07-07 11 views
6

Tôi biết tôi thiếu một cái gì đó thực sự dễ dàng ở đây ...Carrierwave kiểm tra nếu tập tin từ xa tồn tại qua sương mù

CarrierWave::Storage::Fog::File có một phương pháp exists?

Tôi làm cách nào để sử dụng? Tôi chỉ đang cố kiểm tra xem tệp đã tải lên trước đây có tồn tại trên bộ nhớ từ xa hay không.

Cả đối tượng hình ảnh của tôi và đối tượng người tải lên của tôi đều không thể truy cập phương pháp này. Chắc chắn tôi không phải tạo đối tượng CarrierWave::Storage::Fog::File mới để kiểm tra xem tệp có tồn tại không?

Nếu có, tôi nên nhập thông số nào? Phải mất những điều sau đây: người tải lên, cơ sở, đường dẫn (Tôi đã sử dụng trình tải lên, thư mục lưu trữ và url hình ảnh, nhưng điều đó không hoạt động)

Trả lời

18

Giả sử bạn có mô hình Người dùng có hình ảnh trường mà bạn sử dụng Carrierwave. Bây giờ bạn có thể viết:

user = User.first 
user.image.file.exists? 

Điều này sẽ thực hiện một kiểm tra từ xa mà trả về true hoặc false

+0

Biết tôi nhớ da diết cái gì đó đơn giản; cảm ơn rất nhiều! – Demelziraptor

+0

Mặc dù tính năng này hoạt động, nhưng nó vẫn hoạt động chậm vì nó đang thực hiện kiểm tra từ xa, đặc biệt nếu bạn đang thực hiện nó trên nhiều hình ảnh trên một trang. –

+0

Làm thế nào tôi có thể kiểm tra tệp tồn tại hoặc được tải lên trước khi lưu nó vào cơ sở dữ liệu? (Sử dụng S3 để lưu trữ, CarrierWave & Dropzone.js để tải lên) –