我要检查请求标头参数。如果缺少属性,则我不接受请求。
当前实现在这里:
class SampleController < ApplicationController
before_action :render_message, unless: :check_header
// GET method
def index
....
end
def check_header
return request.headers["key1"] && request.headers["key2"] && request.headers["key3"]
end
def render_message
render json: { message: "missing the custom attribute in the header" }, status:400
end
如何美化此代码?
答案 0 :(得分:0)
我可能会将方法重写为如下形式:
def check_header
required_headers = %w[key2 key2 key3]
required_headers.all? { |key| request.headers[key] }
end
请注意,以上版本与您的示例具有相同的行为。如果您确实需要检查值是否存在(一个空字符串仍然为true),那么您还需要检查present?
。
def check_header
required_headers = %w[key2 key2 key3]
required_headers.all? { |key| request.headers[key].present? }
end
我会考虑使用常量而不是局部变量required_headers
。