0

I have the following models

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

i am using topic nested in course in the routes

Now while saving a new topic the following code works :-

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

AND this doesnt

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

The new topic is saved but no associations are saved in syllabus , i think i might need to use build function here, can anyone pls help ?

Kris
  • 33
  • 2

1 Answers1

0

You have two solutions:

Option 1

Save the @course object instead of the @topic object. The newly created topic association will be inserted in to the syllabuses table. So you would do this instead:

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

Option 2

Create the associated topic in a different manner, like so:

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

Note: I obtained some information from this previous answer

Community
  • 1
  • 1
Paul Richter
  • 10,908
  • 10
  • 52
  • 85