2012-12-17 32 views
3

在我们的rails 3.2.8应用程序中,有一个可挂载的引擎验证,它处理用户的身份验证并为整个应用程序生成会话变量。当我们将验证与另一个rails引擎rfqx集成时,引擎rfqx需要访问由引擎验证生成的会话变量。问题是会话varailable在引擎rfqx中不可用,并且为零。如何将会话变量从一个rails 3.2.8引擎传递到另一个引擎?

在rfqx的routes.rb中,authentify安装如下:

mount Authentify::Engine => "/authentify" 

我们如何使发动机rfqx提供的会话变量?

回答

1

Rails Edge guide

4.3.2使用由应用

提供由于滑轨控制器通常分担之类的认证和访问会话变量代码的控制器,在默认情况下,他们从ApplicationController中继承。然而,Rails引擎的作用域是独立于主应用程序运行,因此每个引擎都可以获得一个有作用域的ApplicationController。该命名空间可防止代码冲突,但引擎控制器通常应访问主应用程序的ApplicationController中的方法。提供此访问的简单方法是将引擎的作用域ApplicationController从主应用程序的ApplicationController继承。对于我们Blorgh引擎,这将改变应用程序/控制器/ blorgh/application_controller.rb做的样子:

class Blorgh::ApplicationController < ApplicationController 
end 

默认情况下,发动机控制器从Blorgh继承:: ApplicationController的。因此,在做出这个改变之后,他们将可以访问主应用程序ApplicationController,就像它们是主应用程序的一部分一样。

此更改的确需要引擎从具有ApplicationController的Rails应用程序运行。

相关问题