2016-04-26 10 views
0

Ich arbeite an einem Rails-Projekt, bei dem ein Benutzer (Modell "Benutzer") ein Dokument hochladen kann (Modell "Dokument"). Ich verwende CarrierWave, um die Dokumente hochzuladen. Der Benutzer kann verschiedene Kontotypen haben (kostenlos oder Premium). Wenn der Benutzer ein kostenloses Konto hat, möchte ich nur zulassen, dass bestimmte Dateitypen hochgeladen werden.Verwenden Sie verschiedene CarrierWave-Uploader für ein Modell basierend auf Attributen eines anderen Modells - RAILS

Die CarrierWave Uploader-Datei weiß nicht, was current_user ist, also kann ich es nicht auf diese Weise überprüfen. Und ich bin mir darüber im Klaren, dass die Verwendung von current_user im Document-Modell eine schlechte Übung ist.

Was ist der beste Weg für mich, damit umzugehen?

Dank

+0

nur für diese Controller verwenden. – 7urkm3n

+0

Hat das Dokumentmodell irgendeine Beziehung zum Benutzermodell? – Sebin

Antwort

0
def extension_white_list 
    return %w(jpg jpeg gif png pdf docx) if model.user.account_type?(:free) 
    %w(jpg jpeg gif png pdf docx doc xlsx xls odt ods csv txt) 
end 

Sie können auf das Document Modell innerhalb Uploader durch die Variable model. Wenn das Modell Document über die Beziehung mit dem Modell User verbunden ist, können Sie etwas wie oben angegeben tun. Bitte beachten Sie, dass Sie account_type Methode in User Modell definieren müssen.