2014-10-04 69 views
0

我試圖構建一個控制器動作,它將在我的應用程序中創建一個新用戶。我希望它嘗試創建用戶,如果成功,請返回User模型,如果失敗則顯示驗證錯誤。到目前爲止,我已經有了這主要是和運行:通過Rails API註冊用戶並返回驗證錯誤

# 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":{}} 

爲什麼當用戶沒有validat它打印出空的錯誤離子錯誤?

回答

0

在Ruby中,只有評估,以虛假的如果聲明。在上例中,@ user.errors是一個ActiveModel :: Errors類,因此評估爲true。嘗試將以上代碼更改爲:

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