CSV 업로드를 통해 일부 목록을 가져오고 싶은 프로젝트에서 작업하고 있습니다. 레일 앱을 사용하면 프런트 엔드에서 CRUD 작업을 수행 할 수 있습니다.레일스 : CSV 일괄 업로드를 위해 업 로더를 우회하는 방법
class Listing < ActiveRecord::Base
mount_uploader :image, ImageUploader
end
업 로더 클래스는 다음과 같다 :
# encoding: utf-8
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
#Create different versions of your uploaded files:
version :thumb do
process :resize_to_fit => [200, 200]
end
end
하지만 백엔드에
, 나는 때 이미지를 안개 이미지 업로드를 우회하려고 다음과 같이목록 클래스입니다 URL은 이미 CSV 파일에서 제공됩니다. 이미지 업 로더를 실행하고 싶지 않습니다.
저는 CSV 업로드 작업을하고 있습니다. 나는 그것이 데이터의 해시와 목록을 저장할 때 nil을 나에게주고 URL로 이미지를 설정하려고 할 때
def self.import(file)
count = 0
CSV.foreach(file, headers: true, encoding:'iso-8859-1:utf-8') do |row|
data = {}
row.to_hash.each do |k, v|
key = MAP[k]
data[key] = v
end
unless data[:vin] == nil
listing = Listing.find_by_vin(data[:vin]) || Listing.new
#listing.attributes = (row.to_hash).merge(image: URI.parse(row['image'])) #
listing.title = "#{data[:year]} #{data[:make]} #{data[:model]}"
unless data[:all_images] == nil
listing_images = data[:all_images].split(",")
i = 0
[:image, :imagefront, :imageback, :imageleft, :imageright, :frontinterior, :rearinterior].each do |image|
unless listing_images.size < 1
data[image] = listing_images[i]
i += 1
end
p "hello"
end
end
data.delete(:all_images)
p data
listing.attributes = data
if listing.valid?
if listing.save!
count = count+1
end
end
end
end
return count
end
:처럼 현재, 코드가 보인다. 그러나 함수에 사용 된 해시 데이터에는 테스트 및 나열의 결과로 아래 보이는 image 속성이 있습니다. image 속성도 있습니다.
내 주요 질문은 : 가 어떻게 생성 목록에서 업 로더 조치를 무시하고 csv 파일에 주어진 URL 문자열에 이미지 URL을 설정/우회 할 수있다. URL을 설정하더라도 설정되지 않고 목록이 다음과 같이 저장됩니다. image as nil.