2014-10-23 3 views
0

Этот вопрос связан с тем, что я попросил пару лет назад:вручную инстанцирование Разрабатывает модели пользовательской

Instantiating Devise user models manually using contents of params hash

Я не уверен, если это рельсы 4 вопроса, но я нахожу, что я не могу вручную создать экземпляр пользователя в моем коде контроллера. Это используется для работы в рельсах 3.

class RegistrationsController < Devise::RegistrationsController 

    ... 
    def schema_test 

    @user = User.new(:email => '[email protected]', :password => 'asdf123', :password_confirmation => 'asdf123') 
    @user.save 
    end 
    ... 
end 

Это Разрабатывает-специфическую часть моего routes.rb: devise_for: пользователи,: контроллеры => {: регистрации => "регистрация"}

devise_scope :user do 
    get '/schema_test', to: 'registrations#schema_test' 
end 

Когда я вызываю schema_test, я нахожу, что пользовательский объект не сохраняется в базе данных. У кого-нибудь есть предложения?

ответ

0

Лучшей практикой является проверка поведения в консоли рельсов, прежде чем интегрировать ее в приложение для рельсов.

Самый простой способ выяснить вашу проблему - прочитать сообщения об ошибках, которые вызывают возврат. Это может быть вызвано не соблюдением требований к паролю и/или что письмо уже существует в вашей базе данных.

От корня вашего приложения запустите rails c.

@user = User.new(:email => '[email protected]', :password => 'asdf123', :password_confirmation => 'asdf123') 

# Check if the user object is valid 
@user.valid? 

# If it comes back false, read the error messages 
@user.errors.messages 

=> {:password=>["is too short (minimum is 8 characters)"]} 

В вашем примере пользователь не сохраняется, поскольку пароль слишком короткий.