Я очень смущен. У меня есть приложение Rails, которое я использую как API. Я использую камень rack-cors
, чтобы разрешить пересечение домена AJAX. Если я отправлю новую информацию о пользователе через консоль, пользователь будет создан отлично. Если я представить новый пользователь через Угловое приложение (API) или с помощью Postman я получаю ошибку:Rails `has_secure_password` не работает над API
{"success":false,"message":"Password can't be blank and Password is too short (minimum is 6 characters )"}
Однако если я оказать Params на моем User
контроллера:
def create
@user = User.new(user_params)
render json: { user: @user, params: params }
return
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render json: { success: true, user: @user } }
else
format.html { render :new }
format.json { render json: { success: false, message: @user.errors.full_messages.to_sentence }, status: :unprocessable_entity }
end
end
конца
я получаю password
и password_confirmation
ОК вроде как на скриншоте прикрепленного:
У меня проблема с pin-point проблемой has_secure_password
. Если я удалю его, пользователь будет создан отлично, но я не получу шифрование паролей и всю его часть. Ее стоит отметить, что я использую Mongoid и добавили has_secure_password
так:
class User
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Enum
include ActiveModel::SecurePassword
...
Ее также важно заметить, что я использую свою собственную проверку подлинности, а не разрабатывать и т.д.
Что я упускаю ?
Вы управляете параметрами password и password_confirmation в своем методе 'users_params'? См. Http://guides.rubyonrails.org/action_controller_overview.html#strong-parameters – max
Также у вас есть оператор 'return' в середине действия вашего контроллера. Это означает, что функция будет завершена до того, как пользователь будет создан. Поскольку вы также вызываете render, вы также получите двойную ошибку рендеринга. Пожалуйста, очистите код и отредактируйте. – max
«return» был только для того, чтобы я мог показать свойства 'params' и остановить остальную часть кода в контроллере для запуска. В основном для тестирования. И да, я включил «пароль» и «пароль_конфирмации» в 'user_params' – WagnerMatosUK