🍇
【Ruby・Grape】allow_blank: trueの罠
環境
- Ruby 3.4.2
- Rails 8.0.2
- Grape 2.3.0
本題
配列型でblankを許容する以下のリクエストパラメータを持つAPIを作成したとする。
module API
class User < API::BaseAPI
resource :users do
params do
requires :brothers_name, type: Array, allow_blank: true
end
post do
~
end
end
end
end
このパラメータに空配列が指定されていた場合、その配列にはnilが要素として格納されてしまう。
p params[:brothers_name]
# [nil]
p params[:brothers_name].blank?
# false
p params[:brothers_name].present?
# true
p params[:brothers_name].length
# 1
compactをつけるなりしてnilを消したほうが使い勝手がよさそう。
p params[:brothers_name].compact!
# []
p params[:brothers_name].blank?
# true
p params[:brothers_name].present?
# false
p params[:brothers_name].length
# 0
Discussion