2011-10-25 107 views
2

我正在使用考拉寶石與Facebook API進行交互。爲了連接到API,我需要將我的Cookie傳遞給考拉。我想在模型中執行此操作,因爲我想在模型中的before_create回調期間從Facebook數據向用戶添加其他數據。例如,如果用戶有一個活動的FB會話,則在創建其用戶行時存儲他們的Facebook UID。如何從模型中獲取cookie?如何在Rails 3中訪問模型中的Cookie

回答

7

模型不應該意識到它們在Web環境中運行。

您可能需要考慮的僅僅是將FB UID存儲在模型上,方法與其他任何屬性相同,方法是在創建過程中將其設置在模型上。

+0

爲什麼?據我的理解,模型是MVC模式中數據存儲的一個包裝。如果數據存儲在cookie中,爲什麼模型不應該知道Web環境?如果目標是將數據存儲與數據查看和數據處理分開,則沒有任何問題。所以,我有興趣聽到你的理由。 – Rokujolady

+0

@Rokujolady當他們*需要*是cookie的*值*時,OP會問一個問題(我如何從模型中獲取cookie)。 *值*不受限於網絡,Cookie是。 「目標」是*無關層*的分離,並且數據沒有理由知道網絡,它只需要來自網絡的*值*。通過分離它們,您可以從任何地方*獲取數據,如測試或服務等。 –

+1

不夠公平。從你的迴應和其他研究中,我開始看到,這更多的是以MVC爲中心的解釋,而不是模式中固有的解釋。簡而言之,我認爲真正的答案是「這樣做,因爲rails框架是爲了處理這個問題而設置的,如果你不行,就會讓你的生活變得悲慘!」這並不違背MVC,因爲操縱數據的東西,控制器,不應該關心數據存儲在哪裏......放在客戶端驅動器上的cookie或服務器數據庫中。 – Rokujolady

相關問題