2015-10-15 40 views
-2

我的用戶除了數字的所有字符都給予這些輸入地帶的Rails

123 - 4567 - 5665

123124-124325

但我需要提交它們在形式上只能用數字。另外,我不能指望用戶通過給他們提醒來爲我做。這對他們來說太不方便了。

所以導致在DB應該是我使用在軌道上4.2紅寶石這個12345675665

我應該使用哪種過濾器?

+0

非常感謝。但我應該在哪裏放這個代碼? '高清raw_phonenumber self.phonenumber 結束 高清raw_phonenumber =(S) self.phonenumber = s.gsub(/ \ d /, '') end' – DanielsV

回答

2
class YourModel < ActiveRecord::Base 

    before_validation :tweak_my_attribute 

    def tweak_my_attribute 
    self.my_attribute = my_attribute.to_s.gsub(/\D/, '') 
    end 

end 
+0

你的答案是正確的,因爲它只會每處理這實例性能並不是一個巨大的因素,但是'String#scan'在這些情況下實際執行得更快,例如'my_attribute.to_s.scan(/ \ d + /)。join' – engineersmnky

+0

非常感謝!它完美的作品。接受答案! – DanielsV

+0

@engineersmnky我見過之前提到過的,但是我不知道這次'\ d +'是真正的鑰匙嗎?或者我做我的基準測試錯誤?我從我的一張桌子上拿下了大約25K個電話號碼。 (我很好奇)https://gist.github.com/phallstrom/c03bd7a1182d5ebdcb18 –