0

ユーザーが最初のリソースを作成するためにアカウントを作成するときに、簡単なサインアップ チュートリアルを案内するページがあります。私のアプリでは、:hotel は :user に属し、:user は has_one hotel です。チュートリアル ページの場合、私のコントローラーには次のものがあります。

    @hotel = current_user.build_hotel

これはうまくいきますが、コマンドが以前に作成したホテルの関連付けを解除するというチュートリアル ページで、ユーザーが何らかの方法で彼を見つけた場合を除きます。つまり、ユーザーが 2 回目に次のようにページにアクセスすると、次のようになります。

 @hotel = current_user.build_hotel

最初に作成したホテルの user_id フィールドは nil になります。明らかにそれは深刻な問題です。そのページで before_filter を実行できますが、ユーザーがページにアクセスするだけですべてを台無しにする方法があることにあまり満足していません。has_one 関係に対して build コマンドを正しく使用するにはどうすればよいですか?

4

1 に答える 1

2

ホテルを建設する前に、その存在をテストできます。

 @hotel = current_user.hotel || current_user.build_hotel
于 2012-10-02T18:14:00.247 に答える