为什么我的访客用户会改变?

时间:2017-03-22 14:42:49

标签: ruby-on-rails authentication

我正在使用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

0 个答案:

没有答案