2011-12-27 113 views
0

我想上傳一個使用回形針的mp3文件,我想在上傳後在文件上添加一個擴展名,就像歌曲的名稱是「just dance.mp3」,我想重命名它「只是dance.mp3(www.hypejamz.com)」我有這段代碼在我的歌模型上傳後重命名文件名

after_create :normalize_song 

    Paperclip.interpolates :normalized_mp3_file_name do |attachment, style| 
    attachment.instance.normalized_mp3_file_name 
    end 

    def normalized_mp3_file_name 
    "#{self.mp3_file_name.gsub(/[^a-zA-Z0-9_\.]/, ' ')}#{'(www.hypejamz.com)'}" 
    end 

    def normalize_song 
    self.update_attributes(:mp3_file_name => normalized_mp3_file_name, :name => "#{self.title} by #{self.user.name}") 
    end 

,如果我這樣做,文件輸出「只是dance.mp3(WWW .hypejamz.com)(www.hypejamz.com)「 但我希望輸出爲」just dance.mp3(www.hypejamz.com)「。謝謝

+0

您是否告訴該文件存儲在「just dance.mp3(www.hypejamz.com)(www.hypejamz.com)」文件名? – PriteshJ 2011-12-27 21:18:39

+0

@PriteshJ是它存儲的方式 – Uchenna 2012-01-06 06:27:39

回答

0

我想這是你需要的FILE_NAME,這是你可以做一個小的hackish方式。

before_save :change_mp3_file_name 

def change_mp3_file_name 
    if !self.mp3_file_name.nil? 
     self.mp3.instance_write(:file_name, "#{self.mp3_file_name}(www.hypejamz.com)") 
    end 
end 

這將保存文件名爲「(www.hypejamz.com)」附加到文件本身並將被檢索爲相同。

+0

感謝這 – Uchenna 2012-01-05 19:43:27

2

這裏有一個規範涵蓋了你所詢問的字符串修改,以及一些使其通過的代碼。

require 'rspec' 

class SongUpload 
    attr_accessor :file_name 

    def initialize(file_name) 
    @file_name = file_name 
    end 

    def normalized_mp3_file_name 
    @file_name + "(www.hypejamz.com)" 
    end 
end 


describe SongUpload do 
    before(:each) do 
    @upload = SongUpload.new("just dance.mp3") 
    end 

    context "#normalized_mp3_file_name" do 
    it "should append the string (www.hypejamz.com) to the file_name" do 
     @upload.normalized_mp3_file_name.should eq "just dance.mp3(www.hypejamz.com)" 
    end 
    end 
end 

我幾乎肯定這不是你要找的東西,但它提供了一個基礎。

+0

是不完全是我想要的,但謝謝。 – Uchenna 2011-12-27 21:28:58

1

根據我所瞭解的情況,當您使用插值時,會在您回顧數據庫中的文件名時追加(www.hypejamz.com)到文件的路徑或網址。

當您正在更新文件名時,在數據庫的文件名中附加「(www.hypejamz.com)」,同時在插入「(www.hypejamz.com)」的同時使用回形針的url或路徑方法檢索文件。再次附加到文件名。

建議將不會更新update_attributes方法

def normalize_song 
    self.update_attributes(:name => "#{self.title} by #{self.user.name}") 
    end 
+0

我在說的是,我想添加(www.hypejamz.com)到MP3文件保存在文件系統本身 – Uchenna 2011-12-29 22:17:40