У меня есть модель с активной проверкой модели, которую я использую, чтобы определить достоверность поисковых терминов ... Если я вызову конечную точку контроллера с недопустимым поиском, рельсы reply_with вернут 200 вместо of 422.response_with return 200 вместо 422
Если я обязывающ.pry внутри моего действия контроллера, я вижу: search_result.valid? => ложный
search_result.errors.full_messages => "Название должно быть не менее 2 символов"
... Так почему я получаю 200?
model:
class SearchResult
include ActiveModel::Validations
validate :ensure_terms_presence_and_length
attr_reader :attrs
def initialize(attrs = {})
@attrs = attrs
end
def users
valid? ? SearchClient.search(attrs) : []
end
private
def ensure_terms_presence_and_length
if attrs.values.join.blank?
errors.add(:base, 'search fields cannot be blank')
else
attrs.each do |key, value|
errors.add(key, 'must be at least 2 characters') if value.length < 2
end
end
end
end
controller:
module Api::V1
class SearchUsersController < ApiController
respond_to :json
def index
search_result = SearchResult.new(permitted_params)
respond_with search_result, serializer: SearchResultSerializer
end
private
def permitted_params
params.permit(
:username,
:first_name,
:last_name,
:email
)
end
end
end
Я не думаю, что это правда. Мои другие контроллеры api, имеющие дело с активными моделями записей, как ресурсы возвращают 422s, когда у них есть ошибки. Похоже, что это только проблема с активными ресурсами модели. – patrick