Devise Confirmable で AutoBuild を使用すると、メール内の確認コードが無効になるという問題がありました。これは、モデルの確認コードが生成されてから電子メールがレンダリングされるためであることがわかりました。その後、AutoBuilt モデルが作成されて親モデルに追加されますが、この操作中に確認コードが再度生成されますが、古いコードは引き続き電子メールでレンダリングされ、ユーザーに送信されるため、ユーザーは新しい確認コードを受け取ることはありません。
これが、development.log からの私の MOPED コマンドです。
MOPED: 127.0.0.1:27017 INSERT database=myapp_development collection=developers documents=[{"_id"=>BSON::ObjectId('52b4c8354372690311040000'), "email"=>"vincent@me.com", "encrypted_password"=>"$2a$10$9VLgfHEBAve5aRgkYW0k3.pXkVwuTRgzT5RMiDhn0pNqNLJv8XZJa", "sign_in_count"=>0, "failed_attempts"=>0, "company"=>"Testing", "provider"=>"github", "uid"=>"4883802", "confirmation_token"=>"08f6209f0ed00e4e494ce15ac472cedce52afee7485372f1123264af92053447", "confirmation_sent_at"=>2013-12-20 22:44:05 UTC}] flags=[]
MOPED: 127.0.0.1:27017 UPDATE database=myapp_development collection=developers selector={"_id"=>BSON::ObjectId('52b4c8354372690311040000')} update={"$set"=>{"encrypted_password"=>"$2a$10$9VLgfHEBAve5aRgkYW0k3.pXkVwuTRgzT5RMiDhn0pNqNLJv8XZJa", "sign_in_count"=>0, "failed_attempts"=>0, "company"=>"Testing", "provider"=>"github", "uid"=>"4883802", "confirmation_token"=>"c2d377599784b34bc9959eb43106f57e60642c5acb53ca93f19cc85b78c57de1", "confirmation_sent_at"=>2013-12-20 22:44:05 UTC, "unconfirmed_email"=>"vincent@me.com"}} flags=[]
私の Devise モデルでは、has_one 関係で AutoBuild を呼び出しています。AutoBuild を削除した瞬間、コードは機能しますが、アプリケーションの半分が壊れています。AutoBuild によって確認トークンが再作成されるのはなぜですか? 助言がありますか?