Paperclip :: Errors :: MissingRequiredValidatorError avec Rails 4

Je reçois cette erreur lorsque j’essaie de télécharger en utilisant un trombone avec mon application de blog rails. Je ne suis pas sûr de savoir à quoi il fait référence quand il est écrit “MissingRequiredValidatorError”. Je pensais qu’en mettant à jour post_params et en lui donnant: image, ce serait bien, car créer et mettre à jour utilisent post_params.

Paperclip::Errors::MissingRequiredValidatorError in PostsController#create Paperclip::Errors::MissingRequiredValidatorError Extracted source (around line #30): def create @post = Post.new(post_params) 

Ceci est mon posts_controller.rb

 def update @post = Post.find(params[:id]) if @post.update(post_params) redirect_to action: :show, id: @post.id else render 'edit' end end def new @post = Post.new end def create @post = Post.new(post_params) if @post.save redirect_to action: :show, id: @post.id else render 'new' end end #... private def post_params params.require(:post).permit(:title, :text, :image) end 

et ceci est mon aide de postes

 module PostsHelper def post_params params.require(:post).permit(:title, :body, :tag_list, :image) end end 

S’il vous plaît laissez-moi savoir si je peux compléter le matériel supplémentaire pour vous aider à m’aider.

À partir de la Paperclip version 4.0 , toutes les pièces jointes doivent inclure une validation content_type , une validation nom_fichier ou indiquer explicitement qu’elles ne le seront pas non plus.

Paperclip déclenche une erreur Paperclip::Errors::MissingRequiredValidatorError si vous ne le faites pas.

Dans votre cas, vous pouvez append l’une des lignes suivantes à votre modèle Post , après avoir spécifié has_attached_file :image

Option 1: Valider le type de contenu

 validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"] 

-Ou- d’une autre manière

 validates_attachment :image, content_type: { content_type: ["image/jpg", "image/jpeg", "image/png", "image/gif"] } 

-OU- encore une autre façon

est d’utiliser regex pour valider le type de contenu.

Par exemple: Pour valider tous les formats d’image, les expressions rationnelles peuvent être spécifiées comme indiqué dans

@ La réponse de LucasCaton

Option 2: Valider le nom de fichier

 validates_attachment_file_name :image, :matches => [/png\Z/, /jpe?g\Z/, /gif\Z/] 

Option 3: Ne pas valider

Si pour une raison folle (peut être valide mais je ne peux pas en penser pour le moment), vous ne souhaitez pas append de validation content_type et permettre aux utilisateurs d’usurper des types de contenu et de recevoir des données inattendues sur votre serveur. Suivant:

 do_not_validate_attachment_file_type :image 

Remarque:

Spécifiez les types MIME selon vos besoins dans les options content_type / matches ci-dessus. Je viens de donner quelques types d’images MIME pour commencer.

Référence:

Reportez-vous à Paperclip: Validations de sécurité , si vous devez encore vérifier. 🙂

Vous devrez peut-être également faire face à la validation de l’usurpation d’identité expliquée ici https://stackoverflow.com/a/23846121

Il suffit de mettre dans votre modèle:

 validates_attachment :image, content_type: { content_type: /\Aimage\/.*\Z/ } 

https://github.com/thoughtbot/paperclip

Besoin d’append validates_attachment_content_type dans le modèle

Rails 3

 class User < ActiveRecord::Base attr_accessible :avatar has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png" validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/ end 

Rails 4

 class User < ActiveRecord::Base has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png" validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/ end 

Assurez-vous que votre modèle de poste ressemble à ceci …

 class Post < ActiveRecord::Base has_attached_file :photo validates_attachment_content_type :photo, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"] end 

Je n’ai pu obtenir aucune de ces solutions non plus. J’ai essayé Paperclip 3.1, mais mon application n’arrivait pas à me dire que mes extensions de fichier image n’étaient pas approuvées, même si elles étaient en format jpg.

J’ai finalement trouvé le succès avec la version 3.5.1.