首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果关系记录已经存在于Rails5中,如何创建一条不会出错的has_many关系记录?

如果关系记录已经存在于Rails5中,如何创建一条不会出错的has_many关系记录?
EN

Stack Overflow用户
提问于 2017-08-07 01:03:00
回答 1查看 118关注 0票数 0

我已经安装了以下Rails 5模型:

代码语言:javascript
复制
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 }

我想要做的是:

代码语言:javascript
复制
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

上面的代码在我第一次运行它时运行得很好,但是一旦在数据库中创建了记录,上面的错误信息就会出现:

代码语言:javascript
复制
ActiveRecord::RecordInvalid: Validation failed: Job title has already been taken

我如何更新上面的内容,使<<只在记录不存在的情况下才创建,而不是创建?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-07 02:20:13

job_title.job_title_skills.find_or_create_by(skill: skill)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45534462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档