[Rails] CSV 가져오기 기능의 실현
목표
개발 환경
・Rubby:2.5.7
・Rails:5.2.4
・Vagrant:2.2.7
・VirtualBox:6.1
・OS:macOS Catallina
전제 조건
다음은 이미 실현되었다.
・슬림 가져오기
・Bootstrap3 가져오기
・발언 기능 설치
이루어지다
1. 젬 도입
Gemfile# 追記
gem 'roo'
단말기$ bundle
2. application.편집
application.rbrequire_relative 'boot'
require 'rails/all'
require 'csv' # 追記
Bundler.require(*Rails.groups)
module Bookers2Debug
class Application < Rails::Application
config.load_defaults 5.2
end
end
3. 모델 편집
book.rbdef self.import(file)
CSV.foreach(file.path, headers: true) do |row|
book = find_by(id: row["id"]) || new
book.attributes = row.to_hash.slice(*updatable_attributes)
book.save!(validate: false)
end
end
def self.updatable_attributes
['id', 'title', 'body']
end
① 가져온 데이터에서 동일한 ID가 발견되면 레코드를 호출하고 찾을 수 없으면 다시 만듭니다.
book = find_by(id: row["id"]) || new
② CSV 파일에서 데이터를 가져옵니다.
book.attributes = row.to_hash.slice(*updatable_attributes)
③ 인증을 거치지 않고 저장한다.
book.save!(validate: false)
④ CSV 가져오기 시 수신할 열을 설정합니다.
def self.updatable_attributes
['id', 'title', 'body']
end
4. 컨트롤러 편집
books_controller.rbdef import
Book.import(params[:file])
redirect_to books_path
end
5. 라우팅 추가
routes.rbresources :books do
collection { post :import }
end
6. 뷰 편집
books/index.html.slim= form_tag import_books_path, multipart: true do
= file_field_tag :file
br
= submit_tag "インポート", class: 'btn btn-success'
Reference
이 문제에 관하여([Rails] CSV 가져오기 기능의 실현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/matsubishi5/items/0ee1a1e9cda037115ec9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
・Rubby:2.5.7
・Rails:5.2.4
・Vagrant:2.2.7
・VirtualBox:6.1
・OS:macOS Catallina
전제 조건
다음은 이미 실현되었다.
・슬림 가져오기
・Bootstrap3 가져오기
・발언 기능 설치
이루어지다
1. 젬 도입
Gemfile# 追記
gem 'roo'
단말기$ bundle
2. application.편집
application.rbrequire_relative 'boot'
require 'rails/all'
require 'csv' # 追記
Bundler.require(*Rails.groups)
module Bookers2Debug
class Application < Rails::Application
config.load_defaults 5.2
end
end
3. 모델 편집
book.rbdef self.import(file)
CSV.foreach(file.path, headers: true) do |row|
book = find_by(id: row["id"]) || new
book.attributes = row.to_hash.slice(*updatable_attributes)
book.save!(validate: false)
end
end
def self.updatable_attributes
['id', 'title', 'body']
end
① 가져온 데이터에서 동일한 ID가 발견되면 레코드를 호출하고 찾을 수 없으면 다시 만듭니다.
book = find_by(id: row["id"]) || new
② CSV 파일에서 데이터를 가져옵니다.
book.attributes = row.to_hash.slice(*updatable_attributes)
③ 인증을 거치지 않고 저장한다.
book.save!(validate: false)
④ CSV 가져오기 시 수신할 열을 설정합니다.
def self.updatable_attributes
['id', 'title', 'body']
end
4. 컨트롤러 편집
books_controller.rbdef import
Book.import(params[:file])
redirect_to books_path
end
5. 라우팅 추가
routes.rbresources :books do
collection { post :import }
end
6. 뷰 편집
books/index.html.slim= form_tag import_books_path, multipart: true do
= file_field_tag :file
br
= submit_tag "インポート", class: 'btn btn-success'
Reference
이 문제에 관하여([Rails] CSV 가져오기 기능의 실현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/matsubishi5/items/0ee1a1e9cda037115ec9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1. 젬 도입
Gemfile
# 追記
gem 'roo'
단말기$ bundle
2. application.편집
application.rb
require_relative 'boot'
require 'rails/all'
require 'csv' # 追記
Bundler.require(*Rails.groups)
module Bookers2Debug
class Application < Rails::Application
config.load_defaults 5.2
end
end
3. 모델 편집
book.rb
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
book = find_by(id: row["id"]) || new
book.attributes = row.to_hash.slice(*updatable_attributes)
book.save!(validate: false)
end
end
def self.updatable_attributes
['id', 'title', 'body']
end
① 가져온 데이터에서 동일한 ID가 발견되면 레코드를 호출하고 찾을 수 없으면 다시 만듭니다.
book = find_by(id: row["id"]) || new
② CSV 파일에서 데이터를 가져옵니다.
book.attributes = row.to_hash.slice(*updatable_attributes)
③ 인증을 거치지 않고 저장한다.
book.save!(validate: false)
④ CSV 가져오기 시 수신할 열을 설정합니다.
def self.updatable_attributes
['id', 'title', 'body']
end
4. 컨트롤러 편집
books_controller.rb
def import
Book.import(params[:file])
redirect_to books_path
end
5. 라우팅 추가
routes.rb
resources :books do
collection { post :import }
end
6. 뷰 편집
books/index.html.slim
= form_tag import_books_path, multipart: true do
= file_field_tag :file
br
= submit_tag "インポート", class: 'btn btn-success'
Reference
이 문제에 관하여([Rails] CSV 가져오기 기능의 실현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/matsubishi5/items/0ee1a1e9cda037115ec9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)