1. ホーム
  2. ruby-on-rails

[解決済み] Ruby on Railsで文字列が数字かどうかテストする

2022-10-22 15:26:47

質問

アプリケーションコントローラに以下のようなものがあります。

def is_number?(object)
  true if Float(object) rescue false
end

で、コントローラで以下のような条件を設定します。

if mystring.is_number?

end

この条件では undefined method というエラーを投げています。私が定義した is_number を間違った場所に定義してしまったのでしょうか...?

どのように解決するのですか?

作成方法 is_number? メソッドです。

ヘルパーメソッドを作成します。

def is_number? string
  true if Float(string) rescue false
end

そして、このように呼び出します。

my_string = '12.34'

is_number?( my_string )
# => true

拡張 String クラスです。

を呼び出せるようにしたい場合は is_number? を直接呼び出したい場合は、ヘルパー関数にパラメータとして渡す代わりに、 文字列に対して is_number? の拡張として String クラスの拡張として、次のように記述します。

class String
  def is_number?
    true if Float(self) rescue false
  end
end

で呼び出すことができます。

my_string.is_number?
# => true