有问题理解Rails中的奇异资源

时间:2011-07-08 18:58:41

标签: ruby-on-rails

我无法理解Rails中奇异资源的工作原理。

特别是,当我在会话中访问Rails应用程序时,Rails如何知道哪个单数属于我;当有很多用户时,Rails应用程序如何确保没有冲突?

服务器是否以某种方式将请求(基于IP)映射到唯一的Rails进程?每个进程对应一个IP,当一个以前未知的IP连接时,新的Rails进程启动了吗?

如果是这样,我怎么可能在同一台机器上以多个用户(使用不同的浏览器)登录?

如果webrick是单线程的话,我怎么可能在运行Webrick的localhost上使用多个奇异资源进入多个会话?

我赞赏任何可以阅读的资源说明或链接。

1 个答案:

答案 0 :(得分:2)

奇异资源所做的唯一事情是改变Rails设置的路由。因此它基本上会删除路由中的所有:id(并且它会丢弃index路由,因为它对于单个资源没有任何意义,现在与show路由相同。

Rails对单一资源没有任何神奇的作用,没有。 需要在你的应用中处理这个问题。您通常会使用会话来存储ID。您的会话将发送到浏览器的cookie映射到Rails在文件,数据库或类似memcache中存储的会话实例,因此服务器上的多个应用程序进程都使用公共会话存储。

因此,例如 - 在用户登录后,您将user_id存储在会话中,并且您将在单一资源的控制器中拥有before_filter(以及所有其他控制器)那需要它)从会话中检索user_id并使用标准的ActiveRecord查找器检索User记录。

如果您想以多个用户身份登录,那么您需要某种范围/命名空间标识符以及user_id,但实际上最好使用one of the authentication gems here - 其中许多有某种范围机制。