2012-11-01 36 views
3

我在讀一本關於Rails的指導,我在模型類跨越這條線進來:的Rails:before_save變量內容

before_save { |user| user.email = email.downcase } 

這是爲了確保該電子郵件地址是小寫之前訪問數據庫(但是你已經知道,因爲你們和gals很聰明!)。

但是,爲什麼不只是有這樣的:

before_save { |user| user.email.downcase! } 

那不是簡單的執行,還是我失去了一些東西?

+0

我有同樣的問題。謝謝! – KMcA

+0

@KMcA使用Michael Hartl指南? – RileyE

+0

是的。真的很享受它。 – KMcA

回答

2

兩者都是一樣的..它只是歸結爲味道。

+0

兩者都不是最優?我認爲人們必須訪問內存中的第二個地點,因此速度較慢。 – RileyE

+0

這真的很難說,因爲它很大程度上取決於你所運行的Ruby VM是如何實現的。請記住,有些VM具有像JavaVM這樣的不可變字符串(至少我認爲它是這樣),所以任何字符串操作都像上述將不得不復制周圍的字符串.. – Tigraine

+0

另外我不會擔心這些類型的優化..還有其他的事情要擔心,這將花費你更多的性能(如N + 1或其他容易犯錯誤)比如果一個字符串被複制或不是:) – Tigraine