我一直在尝试通过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方法不适合我的应用。
我需要将访客会话作为每个步骤的开始进行调用。
感谢任何帮助/指导
由于
答案 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
。