我是红宝石的新手。我想知道当前用户设置的时间/位置。我知道将为每个URL请求生成cookie。会话详细信息存储在哪里?以及当前用户设置的位置(在哪个文件中)。任何人请简要解释一下。
答案 0 :(得分:2)
希望您的Rails应用程序中有users
表,因此设计将自动加载users
中current_user
表的所有列。
答案 1 :(得分:1)
这一切都取决于你如何实现它。如果您使用像Devise这样的库,它有自己的实现,但通常这些东西存储在加密的Rails会话存储中,并存储在每个请求会话中。控制器只有在current_user
被设置为会话中的用户对象后才会验证访问者的cookie。
答案 2 :(得分:0)
我更喜欢它applicaton_controller
..所以我可以检查每个请求上user_signed_in的位置并检查会话..如果它退出然后它的ok else redirect_to登录页面..
例如在application_controller.rb
before_filter :check_current_user
def check_current_user
if current_user
#check if current user exists in our session
session[:current_user_id] = User.find(session[:current_user_id]).id
else
#if not ,then create new and set it to the session and return the current_user as u
session[:current_user_id] = User.create(:username => "guest", :email => "guest_# {Time.now.to_i}#{rand(100)}@example.com")
u.save!(:validate => false)
session[:current_user_id] = u.id
u
end
end
上面的代码虽然不完美但是我只想展示如何实现current_user以使用会话检查每个请求上的current_user,如果没有current_user作为guest,则将其设置在会话中... 强>