Ruby on Rails纸夹旧文件名称问题

时间:2014-10-15 09:14:09

标签: ruby-on-rails ruby paperclip

我使用Rails 4并在添加了回形针初始化代码后,按用户ID初始化用户文件名,以使用此代码为每个文件指定不同的名称

在初始化文件中

# initializers images names by the model id (:id)
Paperclip.interpolates :parent_id do |a, s|
    a.instance.contract.id
end

在模型中

  has_attached_file :photo ,
                    :url => "/system/files/users/:basename_:id.:extension",
                    :path => ":rails_root/public/system/files/users/:basename_:id.:extension"

现在,通过给文件提供basename_fileID.file扩展名

,它可以正常工作

但我注意到我错过了所有旧文件链接,因为新链接将搜索该文件包含basename和fileID之类的内容" image_1.jpeg "但是关于basename的旧链接搜索只有" image.jpeg "

所以如何在Rails中解决它而不更改服务器上的旧文件名?

在Rails 4中是否有一些东西允许我通知链接在某些情况下获取旧路径?

1 个答案:

答案 0 :(得分:0)

最后,我通过使用File.exist?

检查服务器上是否存在该文件来解决此问题

代码

<% if File.exist?(@user.photo.path) %>
   <!--The new path -->    
   <%= link_to "Photo", @user.photo.url %>
<% else %>
    <!--The old path -->
    <%= link_to root_url+'system/files/users/'+@user.photo_file_name, :title => "show image" do %>Photo<% end %>
<% end %>