0

paperclip을 사용하여 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) " 하지만 출력은"단지 dance.mp3 (www.hypejamz.com) "이 되길 원합니다. 고마워요

+0

파일이 "just.mp3 (www.hypejamz.com) (www.hypejamz.com)"파일 이름으로 저장되었다고 말하고 있습니까? – PriteshJ

+0

@PriteshJ 예 그 방법으로 저장됩니다 – Uchenna

답변

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

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

1

내가 이해하는 바에 따르면 보간법을 사용함에 따라 데이터베이스의 파일 이름을 검색 할 때 파일의 경로 또는 URL에 추가됩니다 (www.hypejamz.com).

"(www.hypejamz.com)"을 보완하면서 파일 이름에 "(www.hypejamz.com)"을 추가하고 데이터베이스의 파일 이름을 url 또는 path 메서드로 검색하는 동안 다시 한 번 파일 이름에 추가됩니다.

제안 update_attributes

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

내가 말하는 것은 파일 시스템 자체에 저장된 MP3 파일에 (www.hypejamz.com)을 추가하고자하는 것입니다. – Uchenna