Начиная с Rails 5, belongs_to
ассоциации, как предполагается, требуются по умолчанию.Это будет проверяться каждый раз, когда вы пытаетесь обновить существующую запись.
Если, как вы предлагаете, Garage
- это новая модель, вероятно, вашим существующим автомобилям еще не присвоен гараж.Внесение любых других изменений в автомобиль проверит все проверки, включая проверку наличия гаража.Если в вашем автомобиле его еще нет, проверка завершится неудачно, а транзакция обновления откатится.
Если вы хотите продолжить работу с автомобилями, действительно принадлежащими нулю или одному гаражу, выможете пометить ассоциацию как необязательную:
belongs_to :garage, optional: true
Если вы собираетесь требовать, чтобы все автомобили были назначены в гараж в какой-то момент в будущем, вы можете удалить предложение optional
после обновления всех автомобилей.,Или вы можете прикусить пулю и настаивать на том, чтобы все машины были переданы в гаражи, прежде чем вы сможете вносить в них другие изменения.Это зависит от вас, и ваши действия будут зависеть от вашего варианта использования.
Кстати, ошибка проверки должна появиться в @car.errors
после того, как вы позвоните @car.update
.Если вы получаете откат в будущем, это всегда лучшее место, чтобы сначала посмотреть, что происходит.