Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails &引用;“宁静”;当会话是资源而不是模型时,rails:session[:user\u id]=user.id语法中的资源_Ruby On Rails_Rest_Session_Authentication - Fatal编程技术网

Ruby on rails &引用;“宁静”;当会话是资源而不是模型时,rails:session[:user\u id]=user.id语法中的资源

Ruby on rails &引用;“宁静”;当会话是资源而不是模型时,rails:session[:user\u id]=user.id语法中的资源,ruby-on-rails,rest,session,authentication,Ruby On Rails,Rest,Session,Authentication,在RailsCasts中进行身份验证时,我对一些基本的和重要的东西没有完全理解(这是专业的,对不起,您需要订阅才能访问它) 他创建了一个带有电子邮件和加密密码(has_secure_password)的用户模型 然后,他创建了一个名为Sessions的新控制器,并在配置中将其声明为资源。i、 e resources :sessions 然后,在会话控制器中,他定义了如下创建方法: user = find user and authenticate if user session[:us

在RailsCasts中进行身份验证时,我对一些基本的和重要的东西没有完全理解(这是专业的,对不起,您需要订阅才能访问它)

他创建了一个带有电子邮件和加密密码(has_secure_password)的用户模型

然后,他创建了一个名为Sessions的新控制器,并在配置中将其声明为资源。i、 e

resources :sessions
然后,在会话控制器中,他定义了如下创建方法:

user = find user and authenticate
if user
    session[:user_id] = user.id
else ...
但会话作为模型并不存在。例如,如果我打开控制台并编写

sessions[:user_id] = "hello"
它抛出。有没有人对我所缺少的这个非常基本的概念有什么解释或联系

谢谢


编辑:谢谢你。打字错误修复,也为标记加上最重要的一个答案

我想您在问题中将会话复制为会话,对吗?屏幕上的演员阵容被修改了,所以你需要订阅我现在没有的内容,所以除了评论之外,不能再确认了


现在,对于实际答案,会话是Rails对所描述的实际会话的内部引用,因此,您无法看到为其创建的模型。

简单解释:

会话
只是一个散列,存储为cookie。(除非您特别指示Rails将其存储在数据库中)。模型通常基于ActiveRecord并具有一些行为

你可以通过简单的操作来增加它

  session[:some_thing] = "Info for session"
  session[:store_this_too] = "Some other info to track for this session"
会话
散列由与控制器相关的类/模块创建,
rails控制台
不会加载它们。因此,它在控制台中不可用


这里有一个相当古老的解释。采用基于模型的方法。请记住它们是从旧时代来的。

非常感谢。这个链接正是我问的那些不知道的。嗨,Tony Wright。如果这个或任何答案都解决了你的问题,请点击检查标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这么做。谢谢roob。这是一个清晰简洁的解释。我不知道那个控制台。真的很有帮助。经过进一步思考,这里特别令人困惑的是,“会话”与我的会话Conroller(代码方面)无关。会话由ActionController维护。因此,我的谷歌搜索完全被误导了。以防万一,这对任何人来说都是一个有用的评论!