У меня есть простая телефонная форма <%= f.text_field :phone %>
прямо сейчас. :phone
целый тип, таким образом, это требует, чтобы независимо от того, что пользователь ввел в форму, должно быть что-то как 5551234
вместо более стандартного способа 555-1234
Как я могу позволить пользователю входить в номер телефона США как их приученное к? Я понимаю, что могу использовать validates_format_of
проверить его, но после того как я проверяю его, как я могу отформатировать число и вставить номер телефона в DB как целое число?
"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
phone.gsub(/\D/, '')
должно сработать. Он удаляет нецифровые символы.