2012-12-17 36 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應用程序運行。

相關問題