2010-05-10 32 views
6

Tôi đang sử dụng kẹp giấy để xử lý các tệp tải lên của mình và trong một trường hợp tôi không muốn tệp bắt buộc. Tuy nhiên tôi muốn chắc chắn rằng nó là một loại tập tin cụ thể khi nó có mặt.Kẹp giấy - Xác thực Loại tệp nhưng không hiện diện

Tôi có điều này:

class TestModel < ActiveRecord::Base 
    #stuff 
    has_attached_file :sound #etc... 
    validates_attachment_content_type :sound, :content_type => ['audio/mp3', 'application/x-mp3'] 
end 

Và khi tôi không có tập tin âm thanh hiện tại, nó nói với tôi nó không phải là một trong những loại nội dung hợp lệ. Tôi đã thử thêm '' vào mảng :content_type, cũng không hoạt động!

Tôi cũng đã cố tạo quy trình lambda cho thuộc tính :if, nhưng tôi không thể chạy nó mà không có lỗi nào đó.

Mọi thứ thiếu ở đây?

+0

Tôi đã hỏi câu hỏi tương tự một lúc trở lại http://stackoverflow.com/questions/2257041/smarter-paperclip-validations - Tôi nhận được nó làm việc với một proc. có lẽ nó sẽ giúp bạn – stephenmurdoch

Trả lời

0

đoạn của mô hình của tôi:

has_attached_file :logo, :styles => { :medium => ["300x300>", :png], :thumb => ["100x100>", :png] } 
    validates_attachment_size :logo, :less_than => 2.megabytes 
    validates_attachment_content_type :logo, :content_type => ['image/jpeg', 'image/png', 'image/gif'] 

và nếu tôi không cung cấp tập tin ảnh, @ obj.update_attributes (..) tăng không có lỗi, nhưng xác nhận nếu tôi cung cấp một tập tin. Có lẽ bạn sử dụng phiên bản cũ của kẹp giấy?

gem list | ack paperclip 
paperclip (2.3.1.1) 
+0

Tôi có phiên bản 2.3.2 và có cùng một vấn đề: ( –

4

Tôi đoán bạn có thể thử 'xác thực có điều kiện' trong trường hợp điều kiện là có tệp không?

class TestModel < ActiveRecord::Base 
    #stuff 
    has_attached_file :sound #etc... 
    validates_attachment_content_type :sound, :content_type => ['audio/mp3', 'application/x-mp3'], :if => :sound_attached? 

    def sound_attached? 
    self.sound.file? 
    end 
end 
+0

Tôi nhận ra mình phải làm điều này sau khi nâng cấp lên Paperclip 2.3.2 từ Paperclip 2.3.1.1 –

0

Trước tiên cho tôi nói rằng tôi mới cho cả ruby ​​và đường ray. Thứ hai, tôi không biết nếu điều này có thể được áp dụng cho các tập tin âm thanh nhưng với hình ảnh tôi chỉ cần thiết lập một hình ảnh mặc định để cách này hay cách khác có một bức ảnh liên kết với mỗi bản ghi.

has_attached_file :photo, styles: { small: "64x64", med: "100x100", large: "200x200" }, default_url: "/images/no-image-available.png" 
Các vấn đề liên quan