我正在使用angularjs和rails 5构建调查。我无法识别信息,因此我创建了一个访客用户,而不是使用标准的auth方法。我成功创建了一个访客用户,但访客用户更改了(创建一个新访客)并回答了每个响应。我希望能够跟踪访客用户对每个问题的回复。有关如何使访客用户在整个会话期间持续存在的任何建议?注意:我不使用Devise。
这是我的应用程序控制器:
def current_or_guest_user
if current_user
if session[:guest_user_id] && session[:guest_user_id] != current_user.id
guest_user(with_retry = false).try(:destroy)
session[:guest_user_id] = nil
end
current_user
else
guest_user
end
end
def guest_user(with_retry = true)
# Cache the value the first time it's gotten.
@cached_guest_user ||= User.find(session[:guest_user_id] ||= create_guest_user.id)
rescue ActiveRecord::RecordNotFound # if session[:guest_user_id] invalid
session[:guest_user_id] = nil
guest_user if with_retry
end
private
def create_guest_user
u = User.create(:email => "guest_#{Time.now.to_i}#{rand(100)}@example.com", ip: ip)
u.save!(:validate => false)
session[:guest_user_id] = u.id
u
端
这是我的回应控制器:
def create
# @response = Response.new(response_params)
@response = current_or_guest_user.responses.build(response_params)
if @response.save
render json: @response, status: :created, location: @response
else
render json: @response.errors, status: :unprocessable_entity
end
端