2012-02-26 3 views
2

モデルはあなたが使用している場合、このレコードにコンテンツを更新するために、PUT「作成」と入れて、冪等

を「更新」と呼ばれている提出含まれます場合は...

  1. 万一のに設定して作成しましたデータの作成または変更の時間? PUTは冪等体なので、以前の値に頼るべきではありません。

  2. 要求を発行すると常に更新されるので、冪等元の原則に違反していますか?

答えて

6

万一、データの作成または変更の時間に設定されて作成されましたか? PUTは冪等体なので、以前の値に依存すべきではありません。

私はあなたがここで何を求めているのか分かりません。 2つの異なる概念であるため、created_atが変更時刻に設定される理由はありません。

リクエストを発行すると常に更新されるため、冪等の原則に違反していますか?

updated_atが常に変更されているとは限りません(少なくともRailsにはないし、他の場所にあるべきでもない)。同一のPUTを複数回実行した場合、これらの後続の要求はいずれの属性も変更しないため、偶数性は違反されません。したがって、updated_at時間はではなくに変更されます。

興味深いことにpost on the Rails blog about PUT & PATCHがあります。私はそれを見る方法で、ユーザーはcreated_atまたはupdated_atを要求して送信しないでください(サーバはおそらく普通は無視してそれ自体を設定するべきです)。PUTがオブジェクト全体を送信すべきという考え方に違反しているかどうかは確かに疑問です。しかし、そのアイデアが無視されると(それはしばしばRailsや他の場所にあるように)、PUTは本当に冪等です。

+0

Re:「作成された理由はありません...」確かに、「冪等分」の意味に合わせたいだけです。 – Howard

+0

ハワードのポイントは、HTTP仕様の下では、PUTリソースの作成または変更。あなたが結ぶリソースはいずれの方法でも同じであるはずですが、created_atフィールドはこれで気にしません。 – Chuck

+0

@Chuck How so? 'PUT'要求が完了した後、オブジェクトに異なる' created_at'があったのはいつですか? –

0

created_atを変更しないで、modified_atまたはそれが呼び出されたものを変更します。 Created_atは作成時にのみ設定されます。 BTWは、postとputの両方を使用して値を作成および更新できます。

関連する問題