Tôi đang sử dụng kẹp giấy cho các tệp đính kèm cho nhiều kiểu sử dụng accept_nested_attributes_for. Có cách nào tôi có thể chỉ định các tùy chọn kiểu kẹp giấy cụ thể cho từng mô hình không?Đường ray Kiểu kẹp giấy đa hình
Trả lời
Có. Tôi sử dụng kế thừa bảng đơn (STI) trên các trang web để xử lý Âm thanh, Video và Hình ảnh thông qua mô hình Nội dung.
# models/Asset.rb
class Asset < ActiveRecord::Base
# Asset has to exist as a model in order to provide inheritance
# It can't just be a table in the db like in HABTM.
end
# models/Audio.rb
class Audio < Asset # !note inheritance from Asset rather than AR!
# I only ever need the original file
has_attached_file :file
end
# models/Video.rb
class Video < Asset
has_attached_file :file,
:styles => {
:thumbnail => '180x180',
:ipod => ['320x480', :mp4]
},
:processors => "video_thumbnail"
end
# models/Image.rb
class Image < Asset
has_attached_file :file,
:styles => {
:medium => "300x300>",
:small => "150x150>",
:thumb => "40x40>",
:bigthumb => "60x60>"
}
end
Tất cả đều đi vào Rails là :file
, nhưng bộ điều khiển (A/V/I) biết lưu vào mô hình phù hợp. Chỉ cần nhớ rằng tất cả các thuộc tính cho bất kỳ phương tiện truyền thông nào cần được bao gồm trong Asset
: nếu video không cần phụ đề nhưng hình ảnh thì thuộc tính phụ đề sẽ là 0 cho số Video
. Nó sẽ không phàn nàn.
Các liên kết cũng sẽ hoạt động tốt nếu được nối với các mô hình STI. User has_many :videos
sẽ hoạt động giống như bạn đang sử dụng ngay bây giờ, chỉ cần đảm bảo bạn không cố lưu trực tiếp vào Nội dung.
# controllers/images_controller.rb
def create
# params[:image][:file] ~= Image has_attached_file :file
@upload = current_user.images.build(params[:image])
# ...
end
Cuối cùng, vì bạn có mô hình Nội dung, bạn vẫn có thể đọc trực tiếp từ mô hình đó, ví dụ: bạn muốn có danh sách 20 tài sản gần đây nhất. Ngoài ra, ví dụ này không bị giới hạn để tách các loại phương tiện, nó cũng có thể được sử dụng cho các loại khác nhau của cùng một điều: Avatar < Tài sản, Thư viện < Tài sản, v.v.
Một nicer cách nhiều có thể được, (nếu sử dụng đang đối phó với hình ảnh):
class Image < ActiveRecord::Base
belongs_to :imageable, :polymorphic => true
has_attached_file :attachment, styles: lambda {
|attachment| {
thumb: (
attachment.instance.imageable_type.eql?("Product") ? ["300>", 'jpg'] : ["200>", 'jpg']
),
medium: (
["500>", 'jpg']
)
}
}
end
Câu trả lời của bạn có thực sự hoạt động không? attachment.instance.imageable_type là nil –
@ArtemAminov Có nó hoạt động .. như tôi đang sử dụng nó trong một dự án của tôi. –
có thể bạn có thể giúp tôi với dự án của tôi, vui lòng xem mã tại đây [link] (http://stackoverflow.com/questions/19901485/paperclip-polymorphic-styles) –
- 1. Kiểu trong kẹp giấy chỉ khi đó là hình ảnh [đường ray]
- 2. đường ray kẹp giấy ảnh mặc định với S3
- 3. Kẹp giấy thay đổi đường dẫn hình ảnh sau khi nâng cấp lên đường ray 3.2
- 4. Kẹp giấy cho đường ray: Tôi có thể truy cập vào mô hình không?
- 5. Tải lên tệp bằng Đường dẫn Activeadmin bằng kẹp giấy
- 6. kẹp giấy tùy chỉnh: đường dẫn và: url
- 7. Sao chép ảnh vào giai đoạn S3 (sử dụng đường ray và kẹp giấy)
- 8. Cách dễ dàng để tải lên ajax bằng kẹp giấy trong đường ray?
- 9. Đường ray: Ngăn tải lên ảnh trùng lặp bằng kẹp giấy?
- 10. Đường ray với kẹp giấy Docx content_type đang trở lại dưới dạng ứng dụng/zip
- 11. Sử dụng đá quý kẹp giấy trong đường ray3
- 12. Lưu hình ảnh trong cơ sở dữ liệu bằng cách sử dụng plugin kẹp giấy đường ray
- 13. đường ray + kẹp giấy: Có phải mô hình "Tệp đính kèm" chung là một ý tưởng hay không?
- 14. 'Kẹp giấy :: AdapterRegistry :: NoHandlerError` khi tôi gửi một hình ảnh từ đến đường ray từ một ứng dụng iphone
- 15. Kẹp giấy và Amazon S3 cách thực hiện đường dẫn?
- 16. Cách sử dụng url hình ảnh gốc trong kẹp giấy
- 17. Cách lưu ảnh raw_data bằng kẹp giấy
- 18. Backbone + Rails 'Kẹp giấy' Async ơn
- 19. Tệp Kẹp Giấy Không tìm thấy Lỗi
- 20. Kẹp giấy + Active_admin + Rails 3.0.10 nhiều hình ảnh
- 21. tạo hình thu nhỏ bằng cách sử dụng đá quý kẹp giấy
- 22. Kẹp giấy không thể tìm thấy imagemagick
- 23. Kẹp giấy/Hành khách NotIdentifiedByImageMagickError:
- 24. Kẹp giấy, fog.io và Rackspace
- 25. tải lên ổ google bằng kẹp giấy ở Rails
- 26. Kẹp giấy lấy hình ảnh trực tiếp qua url
- 27. ký hiệu kích thước hình ảnh kẹp giấy
- 28. Lỗi :: Đá quý SignatureDoesNotMatch, AWS-SDK hỗ trợ S3 trên kẹp giấy 3.0.1 và đường ray 3.2
- 29. Kẹp giấy: Chỉ định chất lượng jpeg/jpg
- 30. Heroku: Chạy imagemagick với kẹp giấy
Nơi nào bạn xác định nơi các tập tin được lưu? Trên mô hình nội dung? Hoặc là mô hình Nội dung trống? nói: ': storage =>: s3, : bucket => Rails.application.config.aws_s3_bucket, : s3_credentials =>" # {Rails.root} /config/s3.yml ", : path =>": class /: id /: style /: basename.: extension "' –
Tôi chỉ sử dụng mặc định và giữ mô hình Nội dung trống, nhưng tôi đặt cược có một cách để có một bộ mặc định trong mô hình Nội dung. Tôi chưa thử. – Eric