Ruby on rails 什么是控制器[:id]?

Ruby on rails 什么是控制器[:id]?,ruby-on-rails,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 class Sessio

我的书中说运行“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
class SessionController

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

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

您可以在Rails中阅读更多关于会话的信息:


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

会话[:user_id]是一个变量,您之前需要存储它,然后在整个会话中重复使用它。
例如,您有身份验证,然后您必须跳转页面,这需要用户id。所以您可以使用会话将其存储在那里。您可以在那里找到更多信息。

否。
会话
只是响应
[](键)
方法的对象。你不能定义像
controller[:foo]=“bar”

这样的东西,它有更多关于rails如何与会话一起工作的细节。它不会是像X[:Y]这样的控制器上的键。假设您创建了一个变量
store={}
。然后您会说
store[:user\u id]=user.id
。现在您有了
store={:user\u id:theusersid}
。会话变量只是一个带有附加键的存储。