validates thoughtbot rails ruby-on-rails ruby ruby-on-rails-4 paperclip

ruby on rails - thoughtbot - Paperclip:: Errors:: MissingRequiredValidatorError with Rails 4



paperclip validates (5)

A partir de la Paperclip version 4.0 , se requiere que todos los archivos adjuntos incluyan una validación de tipo de contenido , una validación de nombre de archivo o que declaren explícitamente que tampoco van a tener.

Paperclip genera el Paperclip::Errors::MissingRequiredValidatorError si no hace nada de esto.

En su caso, puede agregar cualquiera de las siguientes líneas a su modelo de Post , luego de especificar has_attached_file :image

Opción 1: validar el tipo de contenido

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

-O- otra manera

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

-O- otra manera

es utilizar expresiones regulares para validar el tipo de contenido.

Por ejemplo: para validar todos los formatos de imagen, la expresión de expresiones regulares se puede especificar como se muestra en

@ Respuesta de LucasCaton

Opción 2: validar nombre de archivo

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

Opción 3: no validar

Si por alguna razón loca (puede ser válida pero no se me ocurre una ahora), no desea agregar ninguna validación de tipo de contenido y permitir que las personas falsifiquen tipos de contenido y reciban datos que no esperaba en su servidor, luego agregue el siguiendo:

do_not_validate_attachment_file_type :image

Nota:

Especifique los tipos MIME según sus requisitos dentro de las opciones de tipo de contenido / matches anteriores. Acabo de dar algunos tipos MIME de imagen para que comiences.

Referencia:

Consulte Paperclip: Validaciones de seguridad , si aún necesita verificar. :)

También es posible que tenga que lidiar con la validación de suplantación explicada aquí https://stackoverflow.com/a/23846121

Recibo este error cuando intento cargar con un clip de papel con mi aplicación de blogs de Rails. No estoy seguro de a qué se refiere cuando dice "MissingRequiredValidatorError" Pensé que al actualizar post_params y darle: image estaría bien, ya que tanto la creación como la actualización usan post_params

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

Este es mi 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

y este es mi ayudante posts

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

Por favor, avíseme si puedo complementar material adicional para ayudarlo a ayudarme.


Asegúrate de que tu modelo de publicación se vea así ...

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


Necesidad de agregar validates_attachment_content_type en el modelo

Rieles 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

Rieles 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



Tampoco pude conseguir que ninguna de estas soluciones funcionara. Probé con Paperclip 3.1, pero no pude entonces que mi aplicación me siguiera diciendo que mis extensiones de archivo de imagen no estaban aprobadas, a pesar de que eran jpg.

Finalmente encontré el éxito con la versión 3.5.1.