[英]Rails create data in has_many :through relation
我有這些文件和一個 CSV 文件。 現在我想
工作.rb
class Job < ApplicationRecord
has_many :city_jobs
has_many :cities, through: :city_jobs
end
城市.rb
class City < ApplicationRecord
has_many :city_jobs
has_many :jobs, through: :city_jobs
end
city_jobs.rb
class CityJob < ApplicationRecord
belongs_to :city
belongs_to :job
end
遷移文件
create_table :jobs do |t|
t.string :title
t.string :level
t.string :salary
t.string :other_salary
t.text :description
t.text :short_des
t.text :requirement
t.integer :category
t.datetime :post_date
t.datetime :expiration_date
t.references :company, foreign_key: true
t.timestamps
end
create_table :cities do |t|
t.string :name, unique: true
t.string :region
t.timestamps
end
create_table :city_jobs do |t|
t.references :city, foreign_key: true
t.references :job, foreign_key: true
t.timestamps
end
導入.rb 需要“csv”
class JobsImport
def import_job
jobs = []
cities = []
job_columns = [:title, :level, :salary, :description, :short_des,
:requirement, :category, :company_id]
city_columns = [:name, :region]
CSV.foreach(Rails.root.join("lib", "jobss.csv"), headers: true) do |row|
cities << {name: row["company province"], region: "Việt Nam"}
jobs << JobCsv.new(row).csv_attributes
end
City.import city_columns, cities, on_duplicate_key_ignore: true
Job.import job_columns, jobs
puts "Data imported"
end
end
我已將 City 和 Job 從 CSV 導入到數據庫。 現在如何將數據創建到 City_jobs 表中,以保留 city_id 和 jobs_id? 請幫我! 謝謝!
您可以再次遍歷 CSV 文件以連接兩個表。
CSV.foreach(Rails.root.join("lib", "jobss.csv"), headers: true) do |row|
city = City.find_by(name: row["company province"])
job = Job.find_by(JobsCsv.new(row).csv_attributes)
city.jobs << job
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.