🍇

【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