gpt4 book ai didi

mysql - Rails 在 has_many :through relation 中创建数据

转载 作者:行者123 更新时间:2023-11-29 09:27:35 28 4
gpt4 key购买 nike

我有这些文件和一个 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

我已将城市和工作从 CSV 导入到数据库。现在,我如何在 City_jobs 表中创建保留城市 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

关于mysql - Rails 在 has_many :through relation 中创建数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59315450/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com