2017-03-02 25 views
0

我读过可以在没有用户身份验证的情况下将会话存储在rails中(引用为this),但是我不确定如何在我的用户模型中进行操作。我基本上是创建一个调查,只想存储用户的IP地址和ID(我不能为IRB的目的有任何其他可识别的信息)。用户将被另一个模型引用,并且我希望调查的响应由当前用户拥有。提示?在没有验证的情况下将会话存储在rails中

+0

来自哪里的ID? – Ruslan

+0

@Ruslan我不确定。这是我的问题的一部分。我基本上想创建一个没有传统凭据的用户,所以我不知道如何生成ID。 – knod

+0

发布实际的代码片段通常会更好,所以我们有更多具体的问题示例来帮助解决。提出这样一个相当普遍的问题很难回答,因此对网站无益。请发布一些代码片段和具体问题,你会想要帮助,谢谢! – thaavik

回答

0

你可以使用securerandom生成唯一ID的用户

require 'securerandom' 
SecureRandom.uuid 

然后你就可以存储在会话中,当用户来保持用户的轨迹

def survey_user 
    session[:survey_user] ||= SecureRandom.uuid 
    SurveyUser.find_or_create_by(id: SecureRandom.uuid)   
end 

所以现在做你的调查,你有他们的数据库中的模型,并可以与他们的答案建立联系

+1

非常感谢你!我以前没有见过SecureRandom,这个答案让我在Rails 5中看到了新的has_secure_token。 – knod

+0

@knod很高兴帮助:) – Ruslan

0

你并不需要创建一个会话。它将在需要时自动创建,即当您存储内容时。你应该只需要这样的东西:

session[:id]   = ... 
session[:ip_address] = ... 

(虽然应该没有需要存储的IP地址,因为在所有应该始终可用的request对象)

相关问题