请帮助解决问题。
我使用宝石回形针和文档: https://github.com/thoughtbot/paperclip/tree/master#validations
我实施了上传文件。有用。现在我需要添加验证规则。我做以下事情: 模型:
class Video < ActiveRecord::Base
validates :title, presence: true
validates :video, presence: true
belongs_to :user
has_attached_file :video, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
validates_attachment :video, :presence => true,
:content_type => { :content_type => "image/jpeg" },
:size => { :in => 0..200.kilobytes }
end
控制器:
def create
@video = Video.new(video_params)
if @video.save
flash[:success] = :video_created
redirect_to @video
else
flash.now[:error] = :user_not_created
render 'new'
end
end
def video_params
params.require(:video).permit(:title, :video)
end
因进入控制台而出现以下错误消息:
Started POST "/videos" for 127.0.0.1 at 2015-07-22 17:18:22 +0300
Processing by VideosController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"wIpQDmh1irqKjGycTpfl/J0UVKGvv4ptmL9l1xHyfAa0Q/WP/jCOFlLWf4nR3wKtjUB+b7TVbpG5XfYBP/oA9Q==", "video"=>{"title"=>"yyy", "video"=>#<ActionDispatch::Http::UploadedFile:0x007f140184ff00 @tempfile=#<Tempfile:/tmp/RackMultipart20150722-29111-yn1mqv.jpg>, @original_filename="BTWzqHonWRs.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"video[video]\"; filename=\"BTWzqHonWRs.jpg\"\r\nContent-Type: image/jpeg\r\n">}, "commit"=>"Create Video"}
Command :: file -b --mime '/tmp/8924685e4bfe6957f64963710295779820150722-29111-wl5fmt.jpg'
Completed 500 Internal Server Error in 11ms (ActiveRecord: 0.0ms)
ArgumentError (comparison of String with 204800 failed):
app/controllers/videos_controller.rb:40:in `create'
屏幕上的显示以下错误消息:
ArgumentError in VideosController#create
comparison of String with 204800 failed
答案 0 :(得分:0)
你可以试试这个:
validate :file_size_validation, :if => "video?"
def file_size_validation
errors[:video] << "should be less than 2MB" if video.size > 2.megabytes
end
有关详细信息,请参阅此stackoverflow question。
答案 1 :(得分:0)
validate :file_size_validation, :if => "video?"
def file_size_validation
errors[:video] << "should be less than 2MB" if video.size.to_i > 1.kilobytes
end