我的用戶除了數字的所有字符都給予這些輸入地帶的Rails
123 - 4567 - 5665
123124-124325
但我需要提交它們在形式上只能用數字。另外,我不能指望用戶通過給他們提醒來爲我做。這對他們來說太不方便了。
所以導致在DB應該是我使用在軌道上4.2紅寶石這個12345675665
。
我應該使用哪種過濾器?
我的用戶除了數字的所有字符都給予這些輸入地帶的Rails
123 - 4567 - 5665
123124-124325
但我需要提交它們在形式上只能用數字。另外,我不能指望用戶通過給他們提醒來爲我做。這對他們來說太不方便了。
所以導致在DB應該是我使用在軌道上4.2紅寶石這個12345675665
。
我應該使用哪種過濾器?
class YourModel < ActiveRecord::Base
before_validation :tweak_my_attribute
def tweak_my_attribute
self.my_attribute = my_attribute.to_s.gsub(/\D/, '')
end
end
你的答案是正確的,因爲它只會每處理這實例性能並不是一個巨大的因素,但是'String#scan'在這些情況下實際執行得更快,例如'my_attribute.to_s.scan(/ \ d + /)。join' – engineersmnky
非常感謝!它完美的作品。接受答案! – DanielsV
@engineersmnky我見過之前提到過的,但是我不知道這次'\ d +'是真正的鑰匙嗎?或者我做我的基準測試錯誤?我從我的一張桌子上拿下了大約25K個電話號碼。 (我很好奇)https://gist.github.com/phallstrom/c03bd7a1182d5ebdcb18 –
非常感謝。但我應該在哪裏放這個代碼? '高清raw_phonenumber self.phonenumber 結束 高清raw_phonenumber =(S) self.phonenumber = s.gsub(/ \ d /, '') end' – DanielsV