2011-07-02 33 views
9

Tôi đã tìm thấy Paperclip có thể xác thực loại nội dung tệp, tức là hình ảnh/jpeg, nhưng tôi muốn xác thực cụ thể tiện ích. Điều này là do tôi đang làm việc với một tiện ích tối nghĩa không có loại nội dung nhất quán. Bất cứ ai biết nếu điều này là doable, hoặc một cách tốt để làm điều này?Xác thực tiện ích trong Paperclip - Ruby on Rails

Trả lời

16

Đoán, không cần phải xác thực bằng phương pháp kẹp giấy. Bạn có thể sử dụng thay vì một cái gì đó như:

has_attached_file :attachment 
validates_format_of :attachment_file_name, :with => %r{\.(docx|doc|pdf)$}i 

Edit:

Ngoài ra, để xác nhận nó với kẹp giấy:

validates_attachment_content_type :attachment, :content_type => 'text/plain' 

^nó sẽ tạo ra lỗi không phù hợp nội dung kiểu tự động.

+3

Cảm ơn, điều này đã hiệu quả. Theo dõi đơn giản: bạn có thể tùy chỉnh thông báo lỗi như thế nào? Điều này dường như không hoạt động: validates_format_of: attachment_file_name,: with =>% r {\. (Txt) $} i,: message => "Chỉ có thể tải lên các tệp .txt." – Geoff

+0

Thật kỳ lạ! nhưng hãy kiểm tra chỉnh sửa để tìm giải pháp thay thế. –

+0

Phương án thứ hai ở đây có thể cũng chấp nhận các tệp có đuôi tệp khác có loại MIME "văn bản/đồng bằng". Có thể tìm thấy một số đuôi tệp như vậy, ví dụ: tại [http://reference.sitepoint.com/html/mime-types-full](http://reference.sitepoint.com/html/mime-types-full). – lossius