Paperclip :: Errors :: MissingRequiredValidatorError与Rails 4

当我尝试使用我的rails博客应用程序使用回形针上传时遇到此错误。 不知道当它说“MissingRequiredValidatorError”时它指的是什么我认为通过更新post_params并给它:图像它会很好,因为创建和更新都使用post_params

Paperclip::Errors::MissingRequiredValidatorError in PostsController#create
Paperclip::Errors::MissingRequiredValidatorError

Extracted source (around line #30):

def create
  @post = Post.new(post_params)

这是我的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    

这是我的帖子帮手

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

请让我知道,如果我可以补充额外的材料来帮助你。


Paperclip version 4.0 ,所有附件都需要包含content_type验证,file_name验证,或者明确声明它们不会有。

回形针引发Paperclip::Errors::MissingRequiredValidatorError错误,如果你不这样做。

在你的情况下,你可以指定has_attached_file :image 之后添加下面任何一行到Post模型

选项1:验证内容类型

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

- 或者 - 另一种方式

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

- 或者 - 另一种方式

是使用正则表达式来验证内容类型。

例如:要验证所有图像格式,可以指定正则表达式,如下所示

@ LucasCaton的回答

选项2:验证文件名

validates_attachment_file_name :image, :matches => [/pngZ/, /jpe?gZ/, /gifZ/]

选项3:不验证

如果出于某种疯狂的原因(可以是有效的,但我现在无法想到),您不希望添加任何content_type验证,并且允许人们欺骗内容类型并接收您不期望到服务器上的数据,然后添加以下:

do_not_validate_attachment_file_type :image

注意:

在上面的content_type / matches选项中根据您的要求指定MIME类型。 我刚刚给出了一些图像MIME类型供您开始。

参考:

如果您仍然需要验证 ,请参阅回形针:安全验证 。 :)

您可能还必须处理此处解释的欺骗验证https://stackoverflow.com/a/23846121


只需放入你的模型:

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

https://github.com/thoughtbot/paperclip


需要在Model中添加validates_attachment_content_type

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
链接地址: http://www.djcxy.com/p/63565.html

上一篇: Paperclip::Errors::MissingRequiredValidatorError with Rails 4

下一篇: Rails I18n validation deprecation warning