Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails: create through-record via association

If anyone has a better title, please let me know :p

I have the following models:

class Car
  has_many :car_drivers
  has_many :drivers, :through => :car_drivers
end

class Driver
  has_many :car_drivers
  has_many :cars, :through => :car_drivers
end

class CarDriver
  belongs_to :car
  belongs_to :driver
end

Now I want to create a new Driver via Car, but the record in the join-table (car_drivers) should be created as well. I tried the following, but while the car record is created, the join-table record is not: driver_object.cars.create

What is the best practice in this case?

like image 488
Gregor Weber Avatar asked Jan 25 '26 12:01

Gregor Weber


1 Answers

The following is going to create new instance of Car, but does not associate it with the Driver instance.

driver_object.cars.create

The following works

driver_object.cars << Car.create(...)

The << method in ActiveRecord appends the newly created Car instance to the :cars collection on Driver and calls save on Driver, creating the CarDriver instance to relate the new Car with driver_object.

like image 58
deefour Avatar answered Jan 28 '26 02:01

deefour



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!