私のSatchmoプロジェクトでは、contact_contactテーブルの行の1つが新しいユーザーに再割り当てされるという厄介なバグがあります。
これは、あるブラウザウィンドウでストアにログインし、(別の新しいウィンドウで)/ accounts /register/を参照して新しいアカウントを作成した場合に発生します。最初にログアウトしても発生しません。
データベースで何が起こるかというと、私がログに記録された元のユーザー(彼のユーザープロファイルがすべて設定されている)が彼のユーザープロファイルを「失う」ということです。何が起こったのかというと、そのユーザーの「連絡先」は、新しいユーザーを「指している」ため、彼にはもう存在しません。つまり、そのuser_idフィールドは、auth_userの新しい「id」を指していることになります。連絡先レコードの内容は、新しいユーザーの情報で上書きされます。
register_form.htmlを変更する以外に、Satchmoのログインコードに変更を加えていません。
登録フォームがPOSTリクエストからユーザー情報の一部を読み取り、前のユーザーに属する連絡先を引き継ぐ可能性はありますか?
障害を再現してから、データベースで「差分」を実行しました。これが喫煙銃です:
+INSERT INTO "auth_user" VALUES(138,'newuser','New','User','y@n.org',...
-INSERT INTO "contact_contact" VALUES(1,'','Old','User',2,'Customer',NULL,'1999-01-01','x@n.org','','2012-04-30');
+INSERT INTO "contact_contact" VALUES(1,'','New','User',138,'Customer',NULL,'1999-02-02','y@n.org','','2012-04-30');
a)レコード番号1が再利用されており、b)ID138で作成された新しいユーザーを指していることがはっきりとわかります。
どうもありがとう、トーマス