No, that’s not what I meant.
You currently have: Person -> has_many -> (via join_person_car) <- has_many <- Car (a many-many between Car and Person).
If Wheel is something specific about the combination of a car and a person, from a normalisation point of view it should be related to the join table, and not to either Person or Car.
This means you have to make a model for the join table (let’s call that PersonCar), otherwise you can’t relate something to it.
You now get:
- Person -> has_many - <- has_one <- PersonCar
- Car -> has_many - <- has_one <- PersonCar
This will still be a many to many between Person and Car. If you define a custom tablename of ‘join_person_car’ for the PersonCar model, you don’t even have to change the many to many for direct access via Person or Car.
Now that you have this, you can relate other models of PersonCar:
- PersonCar -> has_one -> Wheel (which has wheel_id in PersonCar)