Commit 2c0b2f55 by Hoang Phuc

Merge branch 'master' of gitlab.zigexn.vn:phucth/ven-job into feature/user_management_test

parents 275f83a2 096a9a9a
Pipeline #589 failed with stages
in 0 seconds
...@@ -27,6 +27,8 @@ gem 'devise' ...@@ -27,6 +27,8 @@ gem 'devise'
gem 'carrierwave' gem 'carrierwave'
gem 'activerecord-import'
gem 'settingslogic' gem 'settingslogic'
# Use Active Storage variant # Use Active Storage variant
# gem 'image_processing', '~> 1.2' # gem 'image_processing', '~> 1.2'
......
...@@ -45,6 +45,8 @@ GEM ...@@ -45,6 +45,8 @@ GEM
activerecord (6.0.2.2) activerecord (6.0.2.2)
activemodel (= 6.0.2.2) activemodel (= 6.0.2.2)
activesupport (= 6.0.2.2) activesupport (= 6.0.2.2)
activerecord-import (1.0.4)
activerecord (>= 3.2)
activestorage (6.0.2.2) activestorage (6.0.2.2)
actionpack (= 6.0.2.2) actionpack (= 6.0.2.2)
activejob (= 6.0.2.2) activejob (= 6.0.2.2)
...@@ -282,6 +284,7 @@ PLATFORMS ...@@ -282,6 +284,7 @@ PLATFORMS
x86-mswin32 x86-mswin32
DEPENDENCIES DEPENDENCIES
activerecord-import
bcrypt (~> 3.1.7) bcrypt (~> 3.1.7)
bootsnap (>= 1.4.2) bootsnap (>= 1.4.2)
byebug byebug
......
default: &default default: &default
adapter: mysql2 adapter: mysql2
encoding: utf8 encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: dev username: dev
password: dev password: dev
......
...@@ -2,7 +2,6 @@ class CreateCities < ActiveRecord::Migration[6.0] ...@@ -2,7 +2,6 @@ class CreateCities < ActiveRecord::Migration[6.0]
def change def change
create_table :cities do |t| create_table :cities do |t|
t.string :title t.string :title
t.timestamps t.timestamps
end end
end end
......
class AddForeignToCities < ActiveRecord::Migration[6.0]
def change
add_column :cities, :foreign, :boolean, :default => false
end
end
...@@ -10,9 +10,9 @@ ...@@ -10,9 +10,9 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2020_04_10_070154) do ActiveRecord::Schema.define(version: 2020_04_23_044651) do
create_table "applies", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| create_table "applies", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
t.bigint "user_id", null: false t.bigint "user_id", null: false
t.bigint "job_id", null: false t.bigint "job_id", null: false
t.datetime "created_at", precision: 6, null: false t.datetime "created_at", precision: 6, null: false
...@@ -21,20 +21,21 @@ ActiveRecord::Schema.define(version: 2020_04_10_070154) do ...@@ -21,20 +21,21 @@ ActiveRecord::Schema.define(version: 2020_04_10_070154) do
t.index ["user_id"], name: "index_applies_on_user_id" t.index ["user_id"], name: "index_applies_on_user_id"
end end
create_table "cities", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| create_table "cities", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
t.string "title" t.string "title"
t.datetime "created_at", precision: 6, null: false t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false
t.boolean "foreign", default: false
end end
create_table "cities_jobs", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| create_table "cities_jobs", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
t.bigint "city_id", null: false t.bigint "city_id", null: false
t.bigint "job_id", null: false t.bigint "job_id", null: false
t.index ["city_id", "job_id"], name: "index_cities_jobs_on_city_id_and_job_id" t.index ["city_id", "job_id"], name: "index_cities_jobs_on_city_id_and_job_id"
t.index ["job_id", "city_id"], name: "index_cities_jobs_on_job_id_and_city_id" t.index ["job_id", "city_id"], name: "index_cities_jobs_on_job_id_and_city_id"
end end
create_table "companies", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| create_table "companies", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
t.string "title" t.string "title"
t.string "address" t.string "address"
t.string "logo" t.string "logo"
...@@ -43,7 +44,7 @@ ActiveRecord::Schema.define(version: 2020_04_10_070154) do ...@@ -43,7 +44,7 @@ ActiveRecord::Schema.define(version: 2020_04_10_070154) do
t.datetime "updated_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false
end end
create_table "favorites", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| create_table "favorites", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
t.bigint "user_id", null: false t.bigint "user_id", null: false
t.bigint "job_id", null: false t.bigint "job_id", null: false
t.datetime "created_at", precision: 6, null: false t.datetime "created_at", precision: 6, null: false
...@@ -52,20 +53,20 @@ ActiveRecord::Schema.define(version: 2020_04_10_070154) do ...@@ -52,20 +53,20 @@ ActiveRecord::Schema.define(version: 2020_04_10_070154) do
t.index ["user_id"], name: "index_favorites_on_user_id" t.index ["user_id"], name: "index_favorites_on_user_id"
end end
create_table "industries", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| create_table "industries", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
t.string "title" t.string "title"
t.datetime "created_at", precision: 6, null: false t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false
end end
create_table "industries_jobs", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| create_table "industries_jobs", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
t.bigint "industry_id", null: false t.bigint "industry_id", null: false
t.bigint "job_id", null: false t.bigint "job_id", null: false
t.index ["industry_id", "job_id"], name: "index_industries_jobs_on_industry_id_and_job_id" t.index ["industry_id", "job_id"], name: "index_industries_jobs_on_industry_id_and_job_id"
t.index ["job_id", "industry_id"], name: "index_industries_jobs_on_job_id_and_industry_id" t.index ["job_id", "industry_id"], name: "index_industries_jobs_on_job_id_and_industry_id"
end end
create_table "jobs", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| create_table "jobs", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
t.string "title" t.string "title"
t.string "updated_date_job" t.string "updated_date_job"
t.string "level" t.string "level"
...@@ -79,7 +80,7 @@ ActiveRecord::Schema.define(version: 2020_04_10_070154) do ...@@ -79,7 +80,7 @@ ActiveRecord::Schema.define(version: 2020_04_10_070154) do
t.index ["company_id"], name: "index_jobs_on_company_id" t.index ["company_id"], name: "index_jobs_on_company_id"
end end
create_table "users", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| create_table "users", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
t.string "email", default: "", null: false t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false t.string "encrypted_password", default: "", null: false
t.string "reset_password_token" t.string "reset_password_token"
......
This source diff could not be displayed because it is too large. You can view the blob instead.
require 'csv'
namespace :import do
desc "Import CSV"
task csv: :environment do
csv_text = File.read('jobs.csv')
csv = CSV.parse(csv_text, :headers => true)
csv.each do |row|
# Job attributes
job_attributes = {
title: row[9],
level: row[8],
salary: row[11],
job_description: row[7],
company_id: nil,
}
# Company attributes
company_attributes = {
title: row[5],
address: row[2],
logo: "https://via.placeholder.com/66x38?text=Logo",
description: row[14]
}
# Check exist or create company
job_attributes[:company_id] = check_exist_or_create_company(company_attributes)
# Create job
job = check_exist_or_create_job(job_attributes)
if job.cities.count == 0 && job.industries.count == 0
# Industry
industry = check_exist_or_create_industry(row[1])
# Industry job
job.industries << industry
# City
city = check_exist_or_create_city(row[16].gsub('["',"").gsub('"]',""))
# City job
job.cities << city
end
end
end
def check_exist_or_create_company(company_attributes)
find_company = Company.find_or_create_by(company_attributes)
return find_company.id
end
def check_exist_or_create_industry(industry_title)
industries = Industry.where("title LIKE ?", industry_title)
if industries.count == 0
industry = Industry.create(title: industry_title)
else
industry = industries[0]
end
return industry
end
def check_exist_or_create_city(city_title)
cities = City.where("title LIKE ?", city_title)
if cities.count == 0
city = City.create(title: city_title)
else
city = cities[0]
end
return city
end
def check_exist_or_create_job(job_attributes)
job = Job.find_or_create_by(job_attributes)
return job
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