フォームから電話番号を投稿しました
def update_phone
if params[:phone]
#here I want to check weather params[:phone] is number or string
end
私はparams[:phone].class
それを使用しましたが、常に文字列クラスを表示しています。文字列か整数かを調べるにはどうすればよいですか?
フォームから電話番号を投稿しました
def update_phone
if params[:phone]
#here I want to check weather params[:phone] is number or string
end
私はparams[:phone].class
それを使用しましたが、常に文字列クラスを表示しています。文字列か整数かを調べるにはどうすればよいですか?
Ruby では、ほとんどの場合、型ではなく変数の動作を操作します。params[:phone]
有効な電話番号であることを確認したい場合は、正規表現を使用します。つまり、次のようになります。
phone = params[:phone] if params[:phone] =~ /\A\(?\d{3}\)?-?\d{3}-?\d{3}\Z/
しかし、さらに良いオプションは、モデルのバリデーターでこれをチェックすることです。
編集、コメントありがとう。これは、ほとんどの一般的なケースで機能すると思います。ただし、これは先行ゼロでは機能しません。
str = params[:phone]
#it is numeric if the following is true:
str.to_f.to_s == str || str.to_i.to_s == str
電話番号の正規表現と組み合わせて、モデルでいくつかのバリデーターを使用する必要があります。国の電話番号システムに応じて、数字+-./()
とスペースなどの一部の書式設定文字のみを許可する必要があります。+23 (0) 322/242324-12
または234.1432.123
、両方とも有効な数字です。