Регистрация пользователя через API Rails и возврат ошибок проверки

Я пытаюсь создать действие контроллера, которое создаст нового пользователя в моем приложении. Я хочу, чтобы он попытался создать пользователя, и в случае успеха вернул модель User, а в случае неудачи показал ошибки проверки. Пока у меня это в основном работает:

# app/controllers/v1/users_controller.rb

def create
  @user = User.create(user_params)
end

private
  def user_params
    params.require(:user).permit(:email, :password) if params[:user]
  end

и я использую JBuilder, на мой взгляд, так:

# app/views/v1/users/create.json.jbuilder

if @user.errors
  json.errors @user.errors
else
  json.user @user
end

Похоже, это сработает для меня, однако, когда я создаю нового пользователя, у которого нет ошибок проверки, я получаю этот вывод, а не только что созданный User:

{"errors":{}}

Почему он печатает пустые ошибки, когда у пользователя нет ошибок проверки?


person John Dorean    schedule 04.10.2014    source источник


Ответы (1)


В Ruby только nil и false оцениваются как false в операторе if. В приведенном выше примере @user.errors является классом ActiveModel::Errors и поэтому оценивается как true. Попробуйте изменить приведенный выше код на:

if @user.errors.present?
  json.errors @user.errors
else
  json.user @user
end
person Vu Minh Tan    schedule 06.10.2014