【发布时间】:2010-09-20 19:52:32
【问题描述】:
首先,我们为不同类型的“媒体”提供了这个命名空间/标准结构
Media< Ar::Base
Media::Local < Media
Media::Local::Image < Media::Local
Media::Local::Csv < Media::Local
等等……等等……
这非常棒,因为一个用户可以拥有许多媒体,而我们如何显示每个媒体是基于类名和一个共同响应的部分。
但是如果我们有一些需要安全的 Csv 怎么办?也就是说,他们不能居住在公共场所。我真的很讨厌再次分支 Media 并做这样的事情:
Media::Secure < Media
Media::Secure::Image < Media::Secure
Media::NotSecure < Media
Media::NotSecure::Image < Media::NotSecure
...Secure 和 NotSecure 将不同的参数传递给 has_attached_file。
现在有两个代表 Image 的类,它使我的视图/帮助器系统更加复杂——更不用说它感觉很迟钝。
我真正想做的是能够更改某些 Paperclip::Attachment 对象的保存位置在它们被保存之前(例如,通过 foo_secure_action 上传的任何内容)——但我似乎无法使这项工作。 Paperclip::Attachment 有一个带有 :path 和 :url 的 @options 哈希,但在保存之前更改它们不会影响它实际设置的位置。即使这是可能的,我不确定它是否会产生进一步的后果......
我对构建这些数据的其他想法持开放态度,但目前我喜欢在这种情况下使用 STI 的想法。
【问题讨论】: