Ruby on Rails: Проверка и изменение номера телефона

У меня есть простая телефонная форма <%= f.text_field :phone %> прямо сейчас. :phone целый тип, таким образом, это требует, чтобы независимо от того, что пользователь ввел в форму, должно быть что-то как 5551234 вместо более стандартного способа 555-1234 Как я могу позволить пользователю входить в номер телефона США как их приученное к? Я понимаю, что могу использовать validates_format_of проверить его, но после того как я проверяю его, как я могу отформатировать число и вставить номер телефона в DB как целое число?

7
задан Saad Rehman Shah 16 April 2012 в 07:45
поделиться

2 ответа

"1-2-3-4".gsub('-','').to_i
# => 1234

Вы также можете использовать регулярные выражения, если хотите получить больше фантазии, но вы сможете обойтись именно этим.

Вы, вероятно, захотите проверить, как это хранится в БД, поскольку Rails проверяет валидации перед сохранением. Однако вы можете выполнить before_validation , который сначала изменяет число. Примерно так:

before_validation do
  phone = phone.to_s.gsub('-','').to_i
end

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html#M001378

0
ответ дан 6 December 2019 в 06:13
поделиться
phone.gsub(/\D/, '')

должно сработать. Он удаляет нецифровые символы.

12
ответ дан 6 December 2019 в 06:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: