Commit 6c1516cb by Nguyen Ngoc Nghia

using rake task

parent bb73edf4
......@@ -2,9 +2,4 @@ class CitiesController < ApplicationController
def index
@cities = City.all
end
def import
City.cities_import
redirect_to root_path
end
end
......@@ -2,9 +2,4 @@ class CompaniesController < ApplicationController
def index
@companies = Company.all
end
def import
Company.companies_import
redirect_to companies_index_path
end
end
......@@ -2,9 +2,4 @@ class IndustriesController < ApplicationController
def index
@industries = Industry.all
end
def import
Industry.industries_import
redirect_to root_path
end
end
......@@ -2,9 +2,4 @@ class JobsController < ApplicationController
def index
@jobs = Job.all
end
def import
Job.jobs_import
redirect_to jobs_index_path
end
end
......@@ -2,20 +2,5 @@
# t.string :name, unique: true
# t.string :region
require "csv"
require "activerecord-import"
# require "activerecord -import/active_record/adapters/mysql_adapter"
class City < ApplicationRecord
def self.cities_import
cities = []
columns = [:name, :region]
CSV.foreach(Rails.root.join("lib", "jobss.csv"), headers: true) do |row|
cities << {name: row["company province"], region: "Việt Nam"}
end
City.import columns, cities, on_duplicate_key_ignore: true
end
end
......@@ -6,22 +6,6 @@
# add_index :industries, :name, unique: true
require "csv"
require "activerecord-import"
# require "activerecord -import/active_record/adapters/mysql_adapter"
class Company < ApplicationRecord
has_many :jobs, dependent: :destroy
def self.companies_import
companies = []
columns = [:name, :email, :address, :company_code]
CSV.foreach(Rails.root.join("lib", "jobss.csv"), headers: true) do |row|
companies << {name: row["company name"], email: row["contact email"],
address: row["company address"], company_code: row["company id"]}
end
Company.import columns, companies, on_duplicate_key_ignore: true
end
end
# In db
# t.string :name
require "csv"
require "activerecord-import"
# require "activerecord -import/active_record/adapters/mysql_adapter"
class Industry < ApplicationRecord
def self.industries_import
industries = []
columns = [:name]
CSV.foreach(Rails.root.join("lib", "jobss.csv"), headers: true) do |row|
industries << {name: row["category"]}
end
Industry.import columns, industries, on_duplicate_key_ignore: true
end
end
......@@ -11,25 +11,6 @@
# t.datetime :expiration_date
# t.references :company, null: false, foreign_key: true
require "csv"
require "activerecord-import"
# require "activerecord -import/active_record/adapters/mysql_adapter"
class Job < ApplicationRecord
belongs_to :company
def self.jobs_import
jobs = []
columns = [:title, :level, :salary, :description, :short_des, :requirement,
:category, :company_id]
CSV.foreach(Rails.root.join("lib", "jobss.csv"), headers: true) do |row|
jobs << {title: row["name"], level: row["level"], salary: row["salary"],
description: row["description"], short_des: row["benefit"],
requirement: row["requirement"], category: row["type"],
company_id: Company.find_by(company_code: row["company id"])&.id}
end
Job.import columns, jobs
end
end
require "csv"
require "activerecord-import"
# require "activerecord -import/active_record/adapters/mysql_adapter"
class CityImport
def cities
cities = []
columns = [:name, :region]
CSV.foreach(Rails.root.join("lib", "jobss.csv"), headers: true) do |row|
cities << {name: row["company province"], region: "Việt Nam"}
end
City.import columns, cities, on_duplicate_key_ignore: true
end
end
\ No newline at end of file
require "csv"
require "activerecord-import"
# require "activerecord -import/active_record/adapters/mysql_adapter"
class CompanyImport
def companies
companies = []
columns = [:name, :email, :address, :company_code]
CSV.foreach(Rails.root.join("lib", "jobss.csv"), headers: true) do |row|
companies << {name: row["company name"], email: row["contact email"],
address: row["company address"], company_code: row["company id"]}
end
Company.import columns, companies, on_duplicate_key_ignore: true
end
end
\ No newline at end of file
require "csv"
require "activerecord-import"
# require "activerecord -import/active_record/adapters/mysql_adapter"
class IndustryImport
def industries
industries = []
columns = [:name]
CSV.foreach(Rails.root.join("lib", "jobss.csv"), headers: true) do |row|
industries << {name: row["category"]}
end
Industry.import columns, industries, on_duplicate_key_ignore: true
end
end
require "csv"
require "activerecord-import"
# require "activerecord -import/active_record/adapters/mysql_adapter"
class JobImport
def jobs
jobs = []
columns = [:title, :level, :salary, :description, :short_des, :requirement,
:category, :company_id]
CSV.foreach(Rails.root.join("lib", "jobss.csv"), headers: true) do |row|
jobs << {title: row["name"], level: row["level"], salary: row["salary"],
description: row["description"], short_des: row["benefit"],
requirement: row["requirement"], category: row["type"],
company_id: Company.find_by(company_code: row["company id"])&.id}
end
Job.import columns, jobs
end
end
\ No newline at end of file
Rails.application.routes.draw do
get "companies/index"
get "companies/import"
resources :companies do
collection {post :import}
end
get "industries/index"
get "industries/import"
resources :industries do
collection {post :import}
end
get "cities/index"
get "cities/import"
resources :cities do
collection {post :import}
end
get "jobs/index"
get "jobs/import"
resources :jobs do
collection {post :import}
end
......
require "./app/services/cities.rb"
require "./app/services/industries.rb"
require "./app/services/companies.rb"
require "./app/services/jobs.rb"
namespace :task do
desc "import data"
task import: :environment do
CityImport.new.cities
CompanyImport.new.companies
IndustryImport.new.industries
JobImport.new.jobs
end
end
......@@ -5,9 +5,4 @@ class JobsControllerTest < ActionDispatch::IntegrationTest
get jobs_index_url
assert_response :success
end
test "should get import" do
get jobs_import_url
assert_response :success
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment