私のRailsアプリケーションでは、filter
とpost_type
のパラメータを検証したいと考えています。Railsでパラメータを検証する
どちらもオプションですが、存在する場合は値を持つ必要があり、有効な値の配列に一致する値を持つ必要があります。
def validate_filter
if params.has_key?(:filter)
if params[:filter].present?
if ['popular', 'following', 'picks', 'promoted', 'first-posts'].include?(params[:filter])
return true
else
return false
end
else
return false
end
else
return true
end
end
def validate_post_type
if params.has_key?(:post_type)
if params[:post_type].present?
if ['discussions', 'snaps', 'code', 'links'].include?(params[:post_type])
return true
else
return false
end
else
return false
end
else
return true
end
end
そして私は私のメインコントローラメソッドに:私はそれらをチェックするための2つのメソッドを持っている私のコントローラで
def index
raise ActionController::RoutingError.new('Not Found') unless validate_filter && validate_post_type
...
だから、これはpost_type=
とpost_type=cam
を意味は、404を返しますが、 post_type=snaps
はtrueを返します。
渡されたパラメータが有効であることを確認するには、空でもキー自体にも有効であることを検証する方法がありますか?このシナリオでは、blank?
とpresent?
を使用するだけでは不十分です。
アプリケーションがRestAPIが、代わりに、このような場合のためのカスタムバリデータの[JSON-スキーマ](https://github.com/ruby-json-schema/json-schema)を使用しようと使用している場合。 –