cloudinary / cloudinary/cloudinary_gem

Question: How to conditionally override `resource_type`?

Aperta
#447 1 commento 0 reazioni 1 assegnatario Rivendicata da @const-cloudinary Vedi su GitHub
Lingua principale
Ruby
Stelle
420
Fork
285
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Is it possible to conditionally set `resource_type` to "raw" based on attributes of the model instance?

The issue I'm facing is that I have users who want to upload password-protected PDFs. These get rejected by Cloudinary with an error.

In order to upload these, it seems like I need to set the `resource_type` to `"raw"`, overriding the auto-identified file type (pdf):
- https://support.cloudinary.com/hc/en-us/community/posts/360007080219-Encrypted-PDF-file-upload-error
- https://github.com/cloudinary/cloudinary_gem/issues/85
- https://github.com/cloudinary/cloudinary_gem/issues/17#issuecomment-17277801

The only way I've found so far to do that is with a transformation in the uploader class:
```ruby
process cloudinary_transformation resource_type: "raw"
```

...which works, but applies to _all_ files uploaded with this uploader, since `process` is a class method (?).

Is it possible to set `resource_type` dynamically for each uploaded file? Or is the approach to have two different uploaders: one which obeys the MIME type (?) and another which always uses "raw"?

If the approach is multiple uploads, is it possible to switch those based on data in the model, or is there always just one uploader per model? I guess that's maybe a question for the CarrierWave project.

Many thanks for your patience 🙏 - I'm inheriting a legacy project which is using this gem and I'm only just getting to grips with how it works 😅

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.