访问控制器中的guest_user id

时间:2011-12-12 10:26:59

标签: ruby-on-rails devise

我正在使用此处链接中详述的指南向我的应用添加访客用户功能:https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user

我已按照这些步骤操作,现在正尝试访问其中一个控制器中的guest虚拟机。由于此控制器继承自ApplicationController,我的思维过程是我应该能够像这样访问guest_user方法

@user = guest_user

我正在这样做,以便我可以在我的视图中显示访客用户的ID。我在上面代码所在的控制器方法中执行了skip_before_filter步骤。

当我尝试运行此操作时,出现以下错误:undefined method '[]' for false:FalseClass。我一直试图找到问题,但一直没有成功。

我试着评论

u.save(false)

,错误变为:Couldn't find User without an ID,附带ActiveRecord::RecordNotFound in [controller]。所以我认为这意味着问题出现在session[:guest_user_id]?提前谢谢。

我正在使用rails 3.1.1,formtastic 2.0.2,并设计1.5.1

1 个答案:

答案 0 :(得分:2)

好的,所以我解决了我自己的问题,显然你必须改变

u.save(false)

u.save(:validate => false)

我不确定为什么会出现这种情况,如何指导我上面链接的内容没有这个,所以我会深入挖掘一下,看看能不能找到为什么我需要这样做。

更新:u.save(false)是过时的版本,在rails 3中使用u.save(:validate => false)