Model.new不保存关联

时间:2013-12-19 04:07:05

标签: ruby-on-rails activerecord

我有以下型号

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

我在[{1}}

中使用嵌套在topic中的course

现在,在保存新的routes时,以下代码可以正常运行: -

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功能,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您有两种解决方案:

选项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

获得了一些信息