Rails has_one关系安全resource.build_resource在控制器中

时间:2012-10-02 17:50:51

标签: ruby-on-rails has-one

我有一个页面,用户在创建帐户时会通过简短的注册教程来创建他们的第一个资源。在我的应用中,:酒店属于:用户,和:用户has_one酒店。对于教程页面,在我的控制器中,我有:

    @hotel = current_user.build_hotel

哪个有效,除了用户以某种方式找到他回到教程页面上,命令解除了他们之前创建的酒店的关联。换句话说,用户第二次访问页面时使用:

 @hotel = current_user.build_hotel

他们第一次创建的酒店中的user_id字段变为零。显然这是一个严重的问题。我可以在那个页面上做一个before_filter,但我不是很高兴为用户提供一种方法,只需访问一个页面就可以搞定所有内容。我应该如何正确使用build命令进行has_one关系?

1 个答案:

答案 0 :(得分:2)

您可以在建造之前测试酒店的存在:

 @hotel = current_user.hotel || current_user.build_hotel