new
создает объект, но не сохраняет его.
create
создает объект , а сохраняет его, то есть .new
и .save
create!
создает объект и пытается сохранить его, но вызывает исключение, если проверки не пройдены, например, .new
и .save!
Один из элементов путаницы заключается в том, что выше описаны действия, которые вы выполняетеобъект, но похожие имена также присваиваются методам контроллера, особенно в среде RESTful.Например, у вас есть действие создания ...., которое создает новый объект, а затем сохраняет его, и другое действие создания, которое просто создает объект.
Если вам интересно "зачем создавать объект, если яя не собираюсь его спасать?Учтите это - система «пытается» сохранить объект, но проверка препятствует этому, и пользователю предлагается заполнить дополнительную информацию в форме, возможно, обязательные поля.Кто-то хочет, чтобы объект все еще создавался (.new
), пока он продолжается, и он будет содержать значения, которые были назначены до сих пор.Однако на самом деле он не получает save
d, пока не пройдет валидацию.