0

フォームから電話番号を投稿しました

def update_phone
  if params[:phone]
  #here I want to check weather params[:phone] is number or string 
end

私はparams[:phone].classそれを使用しましたが、常に文字列クラスを表示しています。文字列か整数かを調べるにはどうすればよいですか?

4

3 に答える 3

1

Ruby では、ほとんどの場合、型ではなく変数の動作を操作します。params[:phone]有効な電話番号であることを確認したい場合は、正規表現を使用します。つまり、次のようになります。

phone = params[:phone] if params[:phone] =~ /\A\(?\d{3}\)?-?\d{3}-?\d{3}\Z/

しかし、さらに良いオプションは、モデルのバリデーターでこれをチェックすることです。

于 2012-06-21T07:25:14.223 に答える
0

編集、コメントありがとう。これは、ほとんどの一般的なケースで機能すると思います。ただし、これは先行ゼロでは機能しません。

str = params[:phone]

#it is numeric if the following is true:
str.to_f.to_s == str || str.to_i.to_s == str
于 2012-06-21T06:50:25.750 に答える
0

電話番号の正規表現と組み合わせて、モデルでいくつかのバリデーターを使用する必要があります。国の電話番号システムに応じて、数字+-./()とスペースなどの一部の書式設定文字のみを許可する必要があります。+23 (0) 322/242324-12または234.1432.123、両方とも有効な数字です。

于 2012-06-21T07:25:42.973 に答える