2010-09-24 95 views

回答

4

我建议你使用paperclipcarrierwave这两个都是非常好的libs,在大多数情况下都是开箱即用的。

0

你也可以看看attachment_fu导轨。

+1

我个人不会推荐attachment_fu,因为它似乎没有维护,并且已经这么一年多了。 – 2010-09-24 12:01:34

0

对于文件上传,我和两位大玩家合作过。 carrierwavepaperclip

它们为支持不同存储方案的常见任务提供了一个很好的解决方案。两者都支持文件系统和S3。 Carrierwave还支持Rackspace Cloud Files和MongoDB的GridFS。

我会推荐carrierwave,因为他们不同的使用方式。它使用您在模型上安装的独立上载类。这会将与文件上传相关的代码从模型代码中分离出来。我觉得这种方法更简洁,更容易测试。

+0

WRT在对象的atts中存储信息,您可以通过为上传的对象定义单独的模型来在Paperclip中执行此操作,例如,创建一个has_one Image的配置文件对象,使用image类存储上传atts。 – Codebeef 2010-09-24 12:21:15

+0

我现在意识到我曾想过一件事,并写下了另一件事。我想表达的是,我觉得将代码放在单独的上传类中,并且仅向模型中添加一个属性,这是比模型中具有四个属性和后处理代码更清晰的实现。 如果您想将其包含在一对多/多对多关系中,您仍然必须将两个解决方案都包装在单独的模型中。 – 2010-09-24 12:31:37

+0

现在根据评论编辑答案。 – 2010-09-24 12:39:57