2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】String型で送られてくるparamsの数字をInteger型に戻す方法

Posted at

今日はpostmanを使っていたときに、paramsを数字で送ったはずが文字列になっていたので、それをIntegerに戻すやり方を書いておこうと思います。

まず、application_controllerで引数がintegerかどうか判別するメソッド(integer_string?)を定義しておきます。

Integer(str)のところでは引数がinteger型ではなかったときにAugumentErrorになります。それをrescueするといった形です。

application_controller.rb
def integer_string?(str)
  Integer(str)
  true
rescue ArgumentError
  false
end

そしてControllerでparams(homework_params)という形で、string型となっている数字をinteger型に変換しています。

例) {"status"=>"3", "student_comment"=>"楽しかったです!"}から {"status"=>3, "student_comment"=>"楽しかったです!"}に変わる。

homeworks_controller
def update
  @homework.update(params(homework_params))
end

private

def homework_params
  params.permit(:student_comment, :status)
end

def params_int(homework_params)
  homework_params.each do |key, value|
    if integer_string?(value)
      homework_params[key] = value.to_i
    end
  end
end

まとめ

以上になります。フォームから数字が送られてくると、勝手に文字列になってしまうので、そういうときにこの手法は使えそうだと思いました。
なぜか、postmanでも文字列で解釈されましたが・・

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?