[Rails] Validazioni e polimorfismo

Salve a tutti,

vi sottopongo un problema che mi si é presentato ultimamente, sperando
di ricevere qualche dritta a riguardo.

L’applicazione in rails che sto creando permette agli utenti registrati
di caricare video, immagini e altri tipi di files in varie sezioni del
sito.
Siccome files quali video o immagini hanno parametri e metodi comuni
quali visibilità , permessi e altro, ho pensato di creare un modello
generico chiamato Attachment, polimorfico, in questo modo mi é possibile
creare associazioni di questo tipo:

Video has_one :attachment, :as => :attachable
Image has_one :attachment, :as => :attachable

La comodità di questo approccio é che tutte le risorse (“Attachments”)
della mia applicazione sono gestite nello stesso modo, sono accessibili
da un’unica interfaccia ecc…

Siccome però c’é una pagina di upload per ogni tipo di attachment che si
vuole caricare, devo anche controllare che il file sia del formato
corretto.

Al momento sono in grado di validare il tipo di file sul modello
Attachment, il problema é che la validazione cambia in base al tipo di
attachment che si sta caricando (se si sta caricando dalla sezione
images, deve controllare che il file sia per esempio solo in formato
jpg, e così via…).

Il punto é che non so bene come gestire il problema della validazione, e
mi piacerebbe ricevere qualche consiglio, magari da qualcuno che ha gia
avuto un problema simile

Il punto é che non so bene come gestire il problema della validazione, e
mi piacerebbe ricevere qualche consiglio, magari da qualcuno che ha gia
avuto un problema simile

Ti do un paio di idee, la prima è l’uso dell’ helper:

validates_format_of :name, :with=>/.jpg/, :on=>:upload_image, 

:message=>“Devi inserire un immagine”
validates_format_of :name, :with=>/.avi/, :on=>:upload_video,
:message=>“Devi inserire un filmato”

in :with metti l’espressione regolare per controllare l’estensione, in
:on la tua def, prova perchè non l’ho mai usata se non per controllare
una email:
http://www.railsapi.org:8100/activerecord-validations-classmethods-validates_format_of

l’altro sistema è fare la def validate_on_create e metterci dentro i
controlli