2011-02-15 19 views
8

我看到我們重新設置如何會話的軌道3 (Rails sessions current practices軌3,Heroku的,如何使用會話

從用戶那裏收集了一系列的問題,我想保持在一個偉大的答案會議的答案列表,直到我們得到盡頭,然後寫出所有...

但我不知道如何編寫和從會話讀取信息...任何快速指針將讚賞如何保存,例如,一個散列的內容

此外,我們的應用程序託管在Heroku的網格上改變我們可以/應該如何處理會話?

乾杯, JP Rails中

+1

這個問題是不是特定的Heroku? – ClosureCowboy 2011-02-15 02:56:53

+0

+很好的問題,謝謝你的問候! – andy 2013-03-22 08:18:50

回答

18

你不需要爲Heroku改變任何東西。默認情況下,Rails會話存儲在加密的cookie中,因此不需要服務器端配置。

但是,Cookie只能存儲4,096字節的數據。如果您在會話中存儲很多的數據(通常不推薦),您可能會溢出Cookie。在這種情況下,您可能希望設置基於ActiveRecord或Memcached的Cookie。這兩個都很容易做到,並不是Heroku特有的問題。如果您需要幫助,可以隨時詢問另一個StackOverflow問題。就目前而言,直到你達到極限時纔會擔心。

一些粗糙的代碼存儲和讀取的會話你的答案,假設問題與答案是ActiveRecord的模式:

def store_answer(question, answer) 
    session[:answers] ||= {} 
    session[:answers][question.id] = answer.id 
end 

def read_answer(question) 
    Answer.find(session[:answers][question.id]) 
end 
4

會話是非常容易使用,只要使用的會話散列狀結構如下:

  • (組)會話[:MY_NAME] =「喬」
  • (讀)把會話[:MY_NAME]

我不想像你必須改變在Heroku上部署的任何東西。

+0

也是一個很好的答案...簡潔。這就是我們現在所做的。謝謝! – jpwynn 2011-02-15 05:59:00