🐻‍❄️

【すごい短い】Railsのparamsは文字列なんだよね〜って話

2025/03/11に公開

Railsを使っていると、型をあまり意識することがないので、凡ミスしていました。
リクエストパラメータは文字列型なんです。以上。

文字列型を意識せずに判定していた、だめだめなわたし

title_controler
class TitleController < ApplicationController
  def index
    if params[:is_completed]
        # is_completed(完結フラグ)がtrueの時の処理
    end
  end
end

params[:is_completed]"ture"または"false"になるので、常にif分はtrueの判定になります。動作確認の段階で気づけて良かったです。

文字列の"true"と比較するか、Booleanに型変換してから扱いましょう。

title_controller
class TitleController < ApplicationController
  def index
    if params[:is_completed] == "true"   # 文字列との比較
        # is_completed(完結フラグ)がtrueの時の処理
    end
  end
end
title_controller
class TitleController < ApplicationController
  def index
    is_completed = ActiveRecord::Type::Boolean.new.cast(params[:is_completed]) # 型変換
    if is_completed
        # is_completed(完結フラグ)がtrueの時の処理
    end
  end
end

私は、文字列かな〜とか意識するのが面倒なので、ApplicationControllerでtrue、false文字列はBooleanに変換するようにしました。

Discussion