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.