什么是控制器[:id]?

时间:2015-02-03 14:57:46

标签: ruby-on-rails

我的书说要运行" rails g控制器会话"并将其编辑为

class SessionController < ApplicationController
  def create
    user = User.find_or_create_from_auth_hash(request.env['omniauth.auth'])
    session[:user_id] = user.id
    redirect_to root_path
  end
end

什么是会话[:user_id]?如果X是控制器,Y和Z是一些字符串,我可以定义为X [:Y] = Z吗?

3 个答案:

答案 0 :(得分:1)

会话[:user_id]是一个特殊变量,可以像哈希一样访问,将您存储的所有信息存储到应用程序的会话中。

您可以在此处阅读有关Rails会话的更多信息:http://guides.rubyonrails.org/action_controller_overview.html#session

它基本上是一个Hash,它在存储信息的请求之间共享,并在后续请求中重用它。

答案 1 :(得分:0)

session [:user_id]是一个变量,您之前需要存储并在整个会话中重复使用它。 F.E.您有身份验证,然后您必须跳过需要user_id的页面。所以你可以使用session来存储它。您可以在http://guides.rubyonrails.org/security.html找到更多信息。

答案 2 :(得分:0)

没有。 session只是响应[](key)方法的对象。您无法定义controller[:foo] = 'bar'

之类的内容