Ruby on rails 使用附件将文件上载到RAILS根目录之外的目录

Ruby on rails 使用附件将文件上载到RAILS根目录之外的目录,ruby-on-rails,attachment-fu,Ruby On Rails,Attachment Fu,我正在尝试使用附件将文件上传到RAILS\u ROOT之外的目录。我希望将文件保存到~/APP\u NAME/uploads/,以便在公开之前批准/拒绝这些文件。我已尝试了附件的以下配置: has_attachment :storage => :file_system, :path_prefix => "~/APP_NAME/uploads/", :max_size => 5.megabytes 不幸的是,此配

我正在尝试使用附件将文件上传到
RAILS\u ROOT
之外的目录。我希望将文件保存到
~/APP\u NAME/uploads/
,以便在公开之前批准/拒绝这些文件。我已尝试了附件的以下配置:

has_attachment  :storage => :file_system,
                :path_prefix => "~/APP_NAME/uploads/",
                :max_size => 5.megabytes

不幸的是,此配置只是在
RAILS\u ROOT
中创建了
~/APP\u NAME/uploads/
目录结构。在
RAILS\u ROOT
之外保存文件的任何方法?

这可能不是一个附件问题,而是Ruby如何处理文件I/O以及如何在Unix中存储文件

例如,如果你的应用程序位于~/Users/ron/app\u NAME中

如果更改上述代码:

:path_prefix => "~/APP_NAME/uploads/"
致:

这些文件将存储在~/Users/ron/uploads中名为“uploads”的文件夹中。“./”表示当前Rails根目录上方的一个目录。如果您想进入两个目录,它将是“./../”等等

但这只解决了分层导航问题。如果您想让附件Fu将文件存储在文件系统中的硬编码目录中,您可以给它一个文件路径,例如“~/Users/ron/APP_NAME/uploads”,但请记住,在文件路径中进行硬编码这种方式很脆弱,如果您的文件存储要求发生变化,它可能会成为将来的一个痛点


希望能有所帮助。

我找到了一种比使用相对路径名更适合我的替代方法。我在附件类中添加了一个名为
full\u filename
的方法:

class attachment < ActiveRecord::Base
    def full_filename
       return  "/Users/ron/attachments/#{id}.#{file_format}"
    end
end
类附件
class attachment < ActiveRecord::Base
    def full_filename
       return  "/Users/ron/attachments/#{id}.#{file_format}"
    end
end