2

私はRuby on Railsを使用しており、ユーザーがクリックして保存できるものがサイトにあり、ユーザーがいずれかのオプションを続行してコンテンツを保存できるように、ログインとサインアップの両方を含むページにリダイレクトされます。これにより、適切なユーザー検証エラーを表示する際に問題が発生します。b/c ユーザーが保存しているオブジェクト ID を含むパラメーターを渡すために、redirect_to users/new を使用する必要があり、render :new を使用すると、エラーは次のようになります。表示されますが、オブジェクト ID は失われます。これに対する解決策はありますか?

4

2 に答える 2

2

元のアイテム ID をセッションに保存し、通常のログイン/サインアップ プロセスを続行します。それが完了すると、セッションに保存アイテムがある場合は、保存を処理するアクションにリダイレクトされます (これで、アイテム ID をセッションを続行します)。

于 2010-02-15T08:31:25.717 に答える
0

「好奇心から、オブジェクト自体をセッションに保存することの何が問題なのですか? そうすれば、オブジェクトを再度見つけるために 2 回目のデータベース検索を実行する必要がなくなります。」-- TenJack (これはおそらく新しい StackOverflow の質問です)

セッションにアイテムを保存することは悪いことです。モデル オブジェクトを移行した瞬間 (たとえば、列などを追加するため)、セッション内のデータはモデルの型の有効なオブジェクトではなくなるためです。たとえば、新しい属性リストではなく古い属性リストが残ったままになり、無効なオブジェクトとして表示されます。

これが、id のみを保存するのが最善である理由です。データベースから新しく、正しくインスタンス化されたオブジェクトを取得するためです。

于 2010-09-16T14:38:08.133 に答える