2014-09-26 1 views
0

이것은 Ruby를 처음 사용하는 날이며 Ruby를 프로그래밍하는 첫날이기도하므로 Ruby 커뮤니티에서 사용하는 많은 방법에 대해 확신 할 수 없습니다.데이터베이스에 파일 및 상점 URL을 업로드하는 올바른 방법

이 파일을 업로드하고 주어진 파일을 폴더에 저장하고 해당 파일의 경로를 데이터베이스에 저장하려고합니다. 내가 가지고있는 것은 완벽하게 잘 작동하고 있지만 큰 노 - 노를 치고 있는지 확신 할 수 없다.

params[:config][:url] = File.join("public/data/configs", params[:config][:file].original_filename) 

    @map = Map.find(params[:map_id]) 
    @config = @map.map_config.new(map_config_params) 

    if @config.valid? 
     File.open(params[:config][:url], "wb") { |f| f.write(params[:config][:file].read) } 
     @config.save 
     redirect_to map_path(@map) 
    else 
     render 'new' 
    end 

그리고 map_config_params 방법 :

private 
    def map_config_params 
     params.require(:config).permit(:name, :url) 
    end 
여기
params[:config][:url] = File.join("public/data/configs", params[:config][:file].original_filename) 

가 생성 방법의 전체 코드는 다음과 같습니다

내가 가장 우려하고있는 줄은 난 할 곳이다

+0

에 대한 링크는'File.join'을 사용하는 작은 이유는있다 이는 특정 OS에 대한 경로 분리 문자를 자동으로 제공하는 데 유용합니다. 마찬가지로 코드가 Windows에서 실행되는 경우 정방향 및 역방향 슬래시로 구성된 매우 혼란스러운 경로를 반환 할 수 있습니다. 루비는 모든 슬래시의 경로 이름을 Windows에서 변환해야한다는 것을 알기에 충분히 똑똑하기 때문에 값으로 구성된 배열을 단순히 '조인 ('/ ')하거나 단순히 문자열과 변수를 보간하면됩니다. –

+0

파일을 복사하기 위해'open','write' 및'read'를 쓰는 대신에,''FileUtils.cp' (http://ruby-doc.org/stdlib-2.1.3/libdoc/fileutils)를 사용하십시오. /rdoc/FileUtils.html#method-c-cp)? 그리고 drop 디렉토리에 파일을 누적하는 문제를 고려할 수도 있습니다. 어쩌면'FileUtils.mv'가 더 좋을까요? –

+0

@theTinMan "public/data/configs"는 작동하는 동안 일시적 이었지만 조언을 주셔서 감사합니다. 더 읽어 보겠습니다. – TomShar

답변

0

왜 파일 업로드에 반송파 또는 클립을 사용하지 않습니까? 당신은` "공공/데이터/CONFIGS"을`사용하려고하는 경우 아래 보석

  1. Carrier Wave
  2. Paperclip
관련 문제