2013-07-30 39 views
0

我已經將項目從ree-1.8.7升級到1.9.2p429。在升級到ruby 1.9之後設計current_user怪異行爲1.9.3

我在我的設計模型中有一個名爲silhouette_user_id的屬性。在意見和偶爾在我的Ruby代碼,調用

current_user.silhouette_user_id 

返回比

current_user[:silhouette_user_id] 

返回正確的值不同(和錯誤的)值。

雖然我可能搜索和替換來解決這個問題,我擔心其他屬性將表現相同的方式。這是一個很大的項目,我真的需要確定爲什麼會發生這種情況。

任何想法將不勝感激。

+0

這是什麼意思「錯誤」。這是出於藍色的ID,一些其他的ID或什麼?沒有魔法,所以必須有一個原因。 –

+0

是的,它返回一個不同的ID。不完全是隨機的。來自同一個會話的不同用戶對象(例如@user)的標識。哪個id根據顯示的頁面而變化。例如,顯示silhouette_user_id = 100(例如)作爲視圖中最後一個用戶的用戶視圖會導致current_user.silhouette_user_id檢索100!我猜如果我們關注如何在使用時檢索ActiveRecord模型屬性的差異。符號與哈希[]符號,它可能讓我在某個地方。 – DSadaka

+0

你是指「來自同一會話的不同用戶對象(例如@user)」? –

回答

0

我解決了這個問題。在升級期間,我試圖更新我爲User類定義新方法的方式。不幸的是,我做錯了。我用

def define_new_method(key, value) 
    self.class.send(:define_method, key.to_sym) do 
     value 
    end 
    end 

它實際上改變了CLASS用戶的方法,而不是它想要的實例。更改爲:

def define_new_method(key, value) 
    define_singleton_method key.to_sym, lambda { value } 
    end 

導致新方法僅針對預期的實例而不針對current_user實例進行定義。

相關問題