创建没有任何用户的访客

时间:2013-07-26 08:18:03

标签: ruby-on-rails

我一直在尝试通过Rails中的会话创建一个Guest而没有任何User模型或Devise等,我只想要一个通过一次点击创建的Guest。

然后,访客有一系列的偏好步骤(使用Wicked gem)

我创建了一个Guest模型,只需在第一次点击时创建一个新的访客。

首选项的每一步我都试图用以下方式启动控制器:

 @guest = current_user

我已将以下代码添加到我的应用程序控制器中,用于'current_user'

 def current_user
    @_current_user ||= session[:current_user_id] &&
    Guest.find_by_id(session[:current_user_id])
 end

这是创建来宾的操作:

def start
    @guest = Guest.create
      if @guest.save
     session[:guest_id] = @guest.id
     redirect_to would_you_rather_path(:goalkeeper)
    end
 end

我遇到的问题是调用@guest = current_user返回nil,我认为这意味着current_user方法不适合我的应用。

我需要将访客会话作为每个步骤的开始进行调用。

感谢任何帮助/指导

由于

1 个答案:

答案 0 :(得分:1)

start操作中,您要设置session[:guest_id]current_user,您试图通过session[:current_user_id]查找。我将返回nil

您的current_user应该是:

def current_user
  @_current_user ||= Guest.find_by_id(session[:current_user_id]) if session[:current_user_id]
end

start应该像:

def start
    @guest = Guest.create
    if @guest.save
      session[:current_user_id] = @guest.id
      redirect_to would_you_rather_path(:goalkeeper)
    end
 end

还有一件事,我们应该总是尝试使用rails提供的默认7操作,您应该使用create操作而不是start