【问题标题】:Model.new is not saving associationsModel.new 不保存关联
【发布时间】:2014-01-07 12:33:44
【问题描述】:

我有以下型号

class Course < ActiveRecord::Base
  has_many :syllabuses, dependent: :destroy
  has_many :topics, through: :syllabuses  
end

class Topic < ActiveRecord::Base
  has_many :syllabuses, dependent: :destroy
  has_many :courses, through: :syllabuses
end

class Syllabus < ActiveRecord::Base
  belongs_to :course
  belongs_to :topic  
end

我在routes 中使用topic 嵌套在course

现在在保存新的topic 时,以下代码可以工作:-

 @course = Course.find(params[:course_id])    
 @topic = @course.topics.create(topic_params) 

这不是

@course = Course.find(params[:course_id])    
@topic = @course.topics.new(topic_params)
@topic.save

新的topic 已保存,但syllabus 中没有保存任何关联,我想我可能需要在这里使用build 功能,有人可以帮忙吗?

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    您有两种解决方案:

    选项 1

    保存@course 对象而不是@topic 对象。新创建的topic 关联将插入到syllabuses 表中。所以你会这样做:

    @course = Course.find(params[:course_id])    
    @topic = @course.topics.new(topic_params)
    @course.save
    

    选项 2

    以不同的方式创建相关主题,如下所示:

    @topic = Topic.new(topic_params)
    @topic.courses << @course
    @topic.save
    

    注意:我从this previous answer获得了一些信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多