2011-05-28 33 views
1

我想在將用戶名保存到我的數據庫中之前將用戶名變成符號,這似乎是合乎邏輯的,因爲該用戶名會經常被引用,我們希望在內存中節省。但是,將字符串替換爲任何空格或其他非法字符的替代選擇是什麼?還是應該保持一個字符串以避免麻煩?什麼是符號可能有空間的好策略?

+0

請解釋你如何把用戶名變成一個符號,以及如何符號可能在它有一個空間。這一切都有點*不清楚* – pavium 2011-05-28 00:30:44

+1

聽起來像過早的優化...,它不會工作;) – d11wtq 2011-05-28 00:33:05

回答

9

把它作爲一個字符串,避免麻煩。

擔心這種事情就是所謂的過早優化。此外,用戶名不太可能在用戶之間共享,因此無論如何你都不會節省太多內存。

+0

不成熟的優化是編程中所有邪惡(或至少大部分)的根源。 - Knuth – bheeshmar 2011-05-28 04:00:40

2

如果你絕對必須在你的符號空間,將Ruby讓你這樣做:

foo = :"symbol with spaces" # => :"symbol with spaces" 

foo.inspect # => ":\"symbol with spaces\"" 
+1

這*是真正的答案,但我同意你應該不惜一切代價避免使用它。 – colinross 2011-05-28 02:29:56

+0

@ zeletic..how將符號存儲在數據庫中......當查詢被retreived時它們會作爲符號返回嗎?當我嘗試這個'Market.create(:name =>:Test)','Market.find(17).name'時,我得到了這個'「:Test \ n」' – rubyprince 2011-05-28 10:31:08

+0

ActiveRecord序列化'Symbol's在寫入數據庫時​​寫入YAML,但在讀取時不會反序列化。在這個SO問題中有一個簡單的修復:http://stackoverflow.com/questions/2817145/in-rails-models-for-symbols-get-automatically-converted-to-yaml-when-saving-to-d 。或者更好的是,不要在數據庫中首先寫入符號:) – zetetic 2011-05-28 17:07:33

相關問題