Должно ли быть создано для времени создания или изменения данных? Поскольку PUT является идемпотентом, он не должен полагаться на предыдущее значение.
Я не очень понимаю, о чем вы здесь спрашиваете. Нет никакой причины, по которой created_at
будет установлено время модификации, поскольку это две разные концепции.
Поскольку обновление всегда модифицируется при выдаче запроса, поэтому нарушается принцип идемпотента?
Ваше предположение, что updated_at
всегда изменяется, не соответствует действительности (по крайней мере, не в Rails, и не должно быть где-либо еще). Если вы выполняете одно и то же PUT
несколько раз, идемпотентность не нарушается, поскольку эти последующие запросы не изменяют ни один из атрибутов, и поэтому время updated_at
равно , а не .
В блоге Rails есть интересная запись о PUT
& PATCH
, которая добавляет к этому гораздо больше. На мой взгляд, пользователь никогда не должен отправлять created_at
или updated_at
со своим запросом (поскольку сервер, вероятно, обычно должен игнорировать их и устанавливать их сам), хотя это действительно сомнительно, если это нарушает идею, что PUT
следует отправить весь объект. Однако, если эта идея игнорируется (как это часто бывает в Rails и, возможно, в других местах), то PUT
действительно идемпотентен.