,bla bla bla。 Keen.publish(:account_registration_au,{user_session:{session_id:session.id}})结束
如何从我的内部访问会话信息 模型 </跨度> ?我正在努力创造一个基恩 漏斗 </跨度> 我需要该会话ID来通过我的跟踪用户 漏斗 </跨度> 脚步。 …代码:@user = User.find_or_create_for_github_oauth(request.env [“omniauth.auth”],current_user)
# 模型 </跨度> 方法:user = User.find_by(email:auth_hash [‘info’] [‘email’])如果user.nil? #用户是全新的……
我喜欢用以下图像描述MVC模式:
所以,你要编写一些Web应用程序。毫无疑问,任何应用程序中最重要的部分是数据 - 没有任何数据的Web应用程序只是一个静态网站。因此,您的数据是使您的网站独一无二的原因,也是客户访问它的第一个原因。
现在想象你的数据是生活在遥远星球上的一些奇怪的动物 - 那里有一个完整的,小的生态系统:巨大的物品走得很慢,一堆评论在他们的脚下运行,作者正在投入赞成,这是你的应用程序的领域 - 这是事实。模型是事实。你就像上帝一样。
现在,您正在构建该应用程序。你必须建一个小村庄。它将拥有自己的邮局(服务器),以及一些称为控制器的小型建筑。当新请求进入时,您的邮局将读取其地址并将其传递给正确的控制器。现在,控制器中的人员将阅读该消息并决定他们需要一些数据来处理它 - 狩猎团队被召唤并且他们会去丛林捕捉它。 (实际上他们只是拍一张照片,除非你强制执行悲观锁定,长篇故事)。这些数据被处理并传递给控制器秘书,后者将这些处理过的数据(完全不知道它是什么 - 它不是他的工作)粘贴到一个准备好的模板上。然后返回邮局作为回复发回。
这里要注意的重要事项:
如果要构建现有生态系统,将特定于应用程序的数据传递给模型是很好的。但是,为模型提供对会话或cookie等应用程序控件的访问权限是非常危险的。将控制器实例传递给模型就像送动物园的主管喂养野生老虎一样。
除此之外,为模型提供额外的应用程序数据将使它们依赖于应用程序,当您打开控制台时,它们将无法生存。