2015-10-15 97 views
2

很抱歉,但我不能找到解决方案,我的情况回形针::错误:: MissingRequiredValidatorError

我有下面的代码:

class Document < ActiveRecord::Base 
    has_attached_file :item, 
       content_type: { content_type: ["image/jpeg", "image/gif", "document/pdf"] } 
end 

的Gemfile:

source 'https://rubygems.org' 


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 
gem 'rails', '4.2.1' 
# Use sqlite3 as the database for Active Record 
gem 'sqlite3' 
# Use SCSS for stylesheets 
gem 'sass-rails', '~> 5.0' 
# Use Uglifier as compressor for JavaScript assets 
gem 'uglifier', '>= 1.3.0' 
# Use CoffeeScript for .coffee assets and views 
gem 'coffee-rails', '~> 4.1.0' 
# See https://github.com/rails/execjs#readme for more supported runtimes 
# gem 'therubyracer', platforms: :ruby 

# Use jquery as the JavaScript library 
gem 'jquery-rails' 
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks 
gem 'turbolinks' 
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 
gem 'jbuilder', '~> 2.0' 
# bundle exec rake doc:rails generates the API under doc/api. 
gem 'sdoc', '~> 0.4.0', group: :doc 

gem 'bootstrap-sass' 
gem 'haml' 

gem "paperclip" 
# Use ActiveModel has_secure_password 
# gem 'bcrypt', '~> 3.1.7' 

# Use Unicorn as the app server 
# gem 'unicorn' 

# Use Capistrano for deployment 
# gem 'capistrano-rails', group: :development 

shema.db:

ActiveRecord :: Schema.define(version:20151015113219)do

create_table "documents", force: :cascade do |t| 
    t.string "title" 
    t.datetime "created_at",  null: false 
    t.datetime "updated_at",  null: false 
    t.string "item_file_name" 
    t.string "item_content_type" 
    t.integer "item_file_size" 
    t.datetime "item_updated_at" 
    end 

end 

Documentscontroller:

class DocumentsController < ApplicationController 
    def index 
    @documents = Document.order('created_at') 
    end 

    def new 
    @document = Document.new 
    end 

    def create 
    @document = Document.new(document_params) 
    if @document.save 
     flash[:success] = "The file was added!" 
     redirect_to root_path 
    else 
     render 'new' 
    end 
    end 

    private 

    def document_params 
    params.require(:document).permit(:item, :title) 
    end 
end 

当我卸载新的文件,显示错误:回形针::错误:: MissingRequiredValidatorError

完全跟踪:

paperclip (4.3.1) lib/paperclip/attachment.rb:399:in `ensure_required_validations!' 
paperclip (4.3.1) lib/paperclip/attachment.rb:99:in `assign' 
paperclip (4.3.1) lib/paperclip/has_attached_file.rb:66:in `block in define_setter' 
activerecord (4.2.1) lib/active_record/attribute_assignment.rb:54:in `public_send' 
activerecord (4.2.1) lib/active_record/attribute_assignment.rb:54:in `_assign_attribute' 
activerecord (4.2.1) lib/active_record/attribute_assignment.rb:41:in `block in assign_attributes' 
actionpack (4.2.1) lib/action_controller/metal/strong_parameters.rb:183:in `each_pair' 
actionpack (4.2.1) lib/action_controller/metal/strong_parameters.rb:183:in `each_pair' 
activerecord (4.2.1) lib/active_record/attribute_assignment.rb:35:in `assign_attributes' 
activerecord (4.2.1) lib/active_record/core.rb:559:in `init_attributes' 
activerecord (4.2.1) lib/active_record/core.rb:281:in `initialize' 
activerecord (4.2.1) lib/active_record/inheritance.rb:61:in `new' 
activerecord (4.2.1) lib/active_record/inheritance.rb:61:in `new' 
actionpack (4.2.1) lib/action_controller/metal/implicit_render.rb:4:in `send_action' 
actionpack (4.2.1) lib/abstract_controller/base.rb:198:in `process_action' 
actionpack (4.2.1) lib/action_controller/metal/rendering.rb:10:in `process_action' 
actionpack (4.2.1) lib/abstract_controller/callbacks.rb:20:in `block in process_action' 
activesupport (4.2.1) lib/active_support/callbacks.rb:117:in `call' 
activesupport (4.2.1) lib/active_support/callbacks.rb:117:in `call' 
activesupport (4.2.1) lib/active_support/callbacks.rb:555:in `block (2 levels) in compile' 
activesupport (4.2.1) lib/active_support/callbacks.rb:505:in `call' 
activesupport (4.2.1) lib/active_support/callbacks.rb:505:in `call' 
activesupport (4.2.1) lib/active_support/callbacks.rb:92:in `_run_callbacks' 
activesupport (4.2.1) lib/active_support/callbacks.rb:776:in `_run_process_action_callbacks' 
activesupport (4.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks' 
actionpack (4.2.1) lib/abstract_controller/callbacks.rb:19:in `process_action' 
actionpack (4.2.1) lib/action_controller/metal/rescue.rb:29:in `process_action' 
actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action' 
activesupport (4.2.1) lib/active_support/notifications.rb:164:in `block in instrument' 
activesupport (4.2.1) lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
activesupport (4.2.1) lib/active_support/notifications.rb:164:in `instrument' 
actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:30:in `process_action' 
actionpack (4.2.1) lib/action_controller/metal/params_wrapper.rb:250:in `process_action' 
activerecord (4.2.1) lib/active_record/railties/controller_runtime.rb:18:in `process_action' 
actionpack (4.2.1) lib/abstract_controller/base.rb:137:in `process' 
actionview (4.2.1) lib/action_view/rendering.rb:30:in `process' 
actionpack (4.2.1) lib/action_controller/metal.rb:196:in `dispatch' 
actionpack (4.2.1) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch' 
actionpack (4.2.1) lib/action_controller/metal.rb:237:in `block in action' 
actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:74:in `call' 
actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:74:in `dispatch' 
actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:43:in `serve' 
actionpack (4.2.1) lib/action_dispatch/journey/router.rb:43:in `block in serve' 
actionpack (4.2.1) lib/action_dispatch/journey/router.rb:30:in `each' 
actionpack (4.2.1) lib/action_dispatch/journey/router.rb:30:in `serve' 
actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:819:in `call' 
rack (1.6.1) lib/rack/etag.rb:24:in `call' 
rack (1.6.1) lib/rack/conditionalget.rb:38:in `call' 
rack (1.6.1) lib/rack/head.rb:13:in `call' 
actionpack (4.2.1) lib/action_dispatch/middleware/params_parser.rb:27:in `call' 
actionpack (4.2.1) lib/action_dispatch/middleware/flash.rb:260:in `call' 
rack (1.6.1) lib/rack/session/abstract/id.rb:225:in `context' 
rack (1.6.1) lib/rack/session/abstract/id.rb:220:in `call' 
actionpack (4.2.1) lib/action_dispatch/middleware/cookies.rb:560:in `call' 
activerecord (4.2.1) lib/active_record/query_cache.rb:36:in `call' 
activerecord (4.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:649:in `call' 
activerecord (4.2.1) lib/active_record/migration.rb:378:in `call' 
actionpack (4.2.1) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call' 
activesupport (4.2.1) lib/active_support/callbacks.rb:88:in `call' 
activesupport (4.2.1) lib/active_support/callbacks.rb:88:in `_run_callbacks' 
activesupport (4.2.1) lib/active_support/callbacks.rb:776:in `_run_call_callbacks' 
activesupport (4.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks' 
actionpack (4.2.1) lib/action_dispatch/middleware/callbacks.rb:27:in `call' 
actionpack (4.2.1) lib/action_dispatch/middleware/reloader.rb:73:in `call' 
actionpack (4.2.1) lib/action_dispatch/middleware/remote_ip.rb:78:in `call' 
actionpack (4.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call' 
web-console (2.1.2) lib/web_console/middleware.rb:29:in `call' 
actionpack (4.2.1) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' 
railties (4.2.1) lib/rails/rack/logger.rb:38:in `call_app' 
railties (4.2.1) lib/rails/rack/logger.rb:20:in `block in call' 
activesupport (4.2.1) lib/active_support/tagged_logging.rb:68:in `block in tagged' 
activesupport (4.2.1) lib/active_support/tagged_logging.rb:26:in `tagged' 
activesupport (4.2.1) lib/active_support/tagged_logging.rb:68:in `tagged' 
railties (4.2.1) lib/rails/rack/logger.rb:20:in `call' 
actionpack (4.2.1) lib/action_dispatch/middleware/request_id.rb:21:in `call' 
rack (1.6.1) lib/rack/methodoverride.rb:22:in `call' 
rack (1.6.1) lib/rack/runtime.rb:18:in `call' 
activesupport (4.2.1) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call' 
rack (1.6.1) lib/rack/lock.rb:17:in `call' 
actionpack (4.2.1) lib/action_dispatch/middleware/static.rb:113:in `call' 
rack (1.6.1) lib/rack/sendfile.rb:113:in `call' 
railties (4.2.1) lib/rails/engine.rb:518:in `call' 
railties (4.2.1) lib/rails/application.rb:164:in `call' 
rack (1.6.1) lib/rack/lock.rb:17:in `call' 
rack (1.6.1) lib/rack/content_length.rb:15:in `call' 
rack (1.6.1) lib/rack/handler/webrick.rb:89:in `service' 
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service' 
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run' 
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread' 
+0

在文档https://github.com/thoughtbot/paperclip#quick-start它似乎暗示你应该在你的模型类'validates_attachment_content_type:file,content_type:/ \ Aimage \ /.* \ Z /'中有这样的事情,你也应该看看https://github.com/thoughtbot/paperclip#validations – Richlewis

+0

我增加了content_type。同样的错误。请帮助 –

回答

11

形成回形针4.0以后验证附件内容类型是强制性的。所以请在您的模型中添加验证逻辑来​​工作。

class Document < ActiveRecord::Base 
    has_attached_file :item 
    validates_attachment_content_type :item, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif", "application/pdf"] 
end 
+0

请记住在has_attached_file方法之后添加验证程序 – fguillen

0

指定比4.0回形针固定为我下一个版本,你可以尝试