class RuboCop::Cop::Rails::HttpStatus
redirect_to root_url, status: 301
render plain: ‘foo/bar’, status: 304
render json: { foo: ‘bar’ }, status: 404
render :foo, status: 200
# good
redirect_to root_url, status: :moved_permanently
render plain: ‘foo/bar’, status: :not_modified
render json: { foo: ‘bar’ }, status: :not_found
render :foo, status: :ok
# bad
@example EnforcedStyle: numeric
redirect_to root_url, status: :moved_permanently
render plain: ‘foo/bar’, status: :not_modified
render json: { foo: ‘bar’ }, status: :ok
render :foo, status: :ok
# good
redirect_to root_url, status: 301
render plain: ‘foo/bar’, status: 304
render json: { foo: ‘bar’ }, status: 200
render :foo, status: 200
# bad
@example EnforcedStyle: symbolic (default)
Enforces use of symbolic or numeric value to define HTTP status.
def autocorrect(node)
def autocorrect(node) lambda do |corrector| checker = checker_class.new(node) corrector.replace(node.loc.expression, checker.preferred_style) end end
def checker_class
def checker_class case style when :symbolic SymbolicStyleChecker when :numeric NumericStyleChecker end end
def on_send(node)
def on_send(node) http_status(node) do |hash_node| status = status_code(hash_node) return unless status checker = checker_class.new(status) return unless checker.offensive? add_offense(checker.node, message: checker.message) end end