【发布时间】:2012-09-20 15:18:51
【问题描述】:
我已经搜索过了,看起来这应该很简单,但我无法让它工作。我试图在保存电话号码之前删除所有非数字字符。这是我目前拥有的:
before_save { |workorder| workorder.phonenumber =
phonenumber.to_s.gsub(/\D/, '').to_i }
所以如果用户输入
925-555-5555
它应该保存 9255555555 但它实际上只保存 925 并忽略之后的所有内容
我也试过了:
before_save { |workorder| workorder.phonenumber =
phonenumber.to_s.gsub(/[^0-9]/, "").to_i }
结果相同。
已解决:
def raw_phonenumber
self.phonenumber
end
def raw_phonenumber=(s)
self.phonenumber=s.gsub(/\D/, '')
end
【问题讨论】:
-
应该是
workorder.phonenumber.to_s.gsub(/[^0-9]/, "").to_i??你错过了workorder(如果那是你的实际代码) -
phonenumber是什么数据类型?
-
由于您的数据库表,您的输入被转换为整数:“925-555-5555”.to_i #=> 925
标签: ruby regex ruby-on-rails-3