2011-01-29 84 views
0

嘿, 我需要使用current_user模型來執行函數內的一些計算。在函數內部我需要做一些事情,比如current_user.name ='whatever',從而改變當前的名字值。Rails的克隆或哈希?

但是,我希望這種改變是本地的,只在該功能內完成。由於Rails使用對象,這是一個問題。所以我在想,最好的事情是什麼?

也許克隆current_user到一個新的對象,並使用它的功能?這看起來很昂貴。 或者可能創建一個模型哈希?如果我這樣做,實際的模型將不會改變?

編輯:看來,哈希的作品,但沒有與它關聯的類型,所以,如果我這樣做:

@attacker = current_user.attributes 

然後,使用它,我必須指定像to_s(否則我得到某種原因,零誤差):

@attacker [:名字] .to_s = '什麼'

回答

0

參數?

loremized_name = my_f(current_user.name) 
+0

嗯,我不會

def my_f(name) new_name = "lorem" + name return new_name end 
在控制器

某處不想爲需要更改的模型的每個可能屬性創建虛擬屬性。你不覺得它可以用哈希完成嗎? – Spyros 2011-01-29 21:40:33

+0

這是一個簡單的變量。既然你需要`在一個函數內執行一些計算,並且你希望這個改變是局部的,那麼只有在這個函數內部完成``它才能安全地在你的函數範圍內使用一個變量。你可以返回這個變量,或者讓它在你的函數內死掉。不需要虛擬屬性。 – lbz 2011-01-29 21:43:40

0

如果你需要的所有模型中的邏輯的,最簡單的方法是簡單地克隆它:

def local_function 
    user = current_user.clone 
    # Perform some calculations on user here 
end