2013-03-06 22 views
1

我正在關注實現Facebook API的RailsCast。在User模型,我有一個方法:Rails如何區分屬於不同用戶的即時變量

def facebook 
    @facebook ||= Koala::Facebook::API.new(oauth_token) 

其中建立可以使用用戶模型內的其他方法來共享即時變量。

我的問題是:

如果我的Rails應用程序有100個用戶在線,每個人創建一個實例@facebook,如何Rails的知道哪些@facebook是與用戶相關聯?

回答

1

實例變量與它們所屬對象的實例相關聯。

用戶與自己的User實例進行交互,因爲它與其會話或特定請求相關聯。請求使用特定於請求的控制器實例進行處理,該實例繼而處理User的特定實例,因此處理值爲@facebook

+0

感謝您的回答。我想知道我是否有會話,每次發送請求時都會重新創建綁定到特定會話的用戶實例? – AdamNYC 2013-03-06 22:32:36

+0

@AdamNYC似乎這應該很容易回答,不是嗎?也就是說,這取決於幾個因素,比如你的會話在哪裏生活,你如何處理auth/auth等等。 – 2013-03-06 22:34:17

+0

謝謝,戴夫。我其實不知道。但現在是時候回到基礎了。 – AdamNYC 2013-03-06 22:58:08

1

它沒有。在網絡應用程序中沒有「在線」這樣的事情,每次你點擊一個鏈接,發送一個請求。對於這個請求,所有的類都被實例化,包括運行你發佈的代碼。

請求完成後,這些類將被處置。

+0

啊,我明白了。現在我更瞭解「無狀態」。如果我使用@facebook在背景上查詢會發生什麼? – AdamNYC 2013-03-06 22:21:12

+0

「背景」是什麼意思? delayed_job的?任何其他隊列?或者只是一個方法調用? – Femaref 2013-03-06 22:39:00

+0

我的意思是delayed_job – AdamNYC 2013-03-06 22:56:43

相關問題