0

我有以下Rails的5款車型設置:Rails 5,如何創建一個has_many關係記錄,如果關係記錄已經存在就不會出錯?

JobTitle 
    has_many :job_title_skills 
    has_many :skills, through: :job_title_skills 

Skills 
    has_many :job_title_skills 
    has_many :job_titles, through: :job_title_skills 

JobTitleSkills 
    belongs_to :job_title 
    belongs_to :skill 
    validates :job_title_id, uniqueness: { scope: :skill_id } 

我試圖做的是以下幾點:

skill1 = Skill.find_or_create_by(title: 'YYY') 

job_titles = JobTitle.all 
job_titles.each_with_index do |job_title, index| 
    case job_title.title 
    when "XXXXX" 
    job_title.skills << skill1 
    end 
end 

以上正常工作的第一時間我運行它,但一旦記錄在數據庫中已經創建,上述錯誤寬:

ActiveRecord::RecordInvalid: Validation failed: Job title has already been taken 

我怎樣才能更新的上方,使得< < instea只有在記錄不存在的情況下才創建?

感謝

回答

2

job_title.job_title_skills.find_or_create_by(skill: skill)

相關問題