🐻❄️
【すごい短い】Railsのparamsは文字列なんだよね〜って話
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