Я работаю над покупкой магазина. Когда форма отправляется, это действие происходит в моем контроллере
def update_billing
...
if @checkout.save
sign_in(guest_user) #<--
redirect_to root_path, notice: "Success!"
else
render 'billing'
end
end
Я проверяю это на raise
внутри действия и проверяю его с помощью better_errors:
>> sign_in(guest_user) if params[:checkout_form][:create_an_account] == "1"
=> #<User id: 8, email: "[email protected]", encrypted_password: "$2a$10$HCv7veSO7LC9Dh1tKD0Jbe57Pz6lAsiZgfIiWOys7bF...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 6, current_sign_in_at: "2014-06-04 19:45:36", last_sign_in_at: "2014-06-04 19:29:48", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", created_at: "2014-06-04 18:50:29", updated_at: "2014-06-04 19:45:36", guest: false, guest_email: "[email protected]">
>> current_user
=> #<User id: 8, email: "[email protected]", encrypted_password: "$2a$10$HCv7veSO7LC9Dh1tKD0Jbe57Pz6lAsiZgfIiWOys7bF...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 6, current_sign_in_at: "2014-06-04 19:45:36", last_sign_in_at: "2014-06-04 19:29:48", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", created_at: "2014-06-04 18:50:29", updated_at: "2014-06-04 19:45:36", guest: false, guest_email: "[email protected]">
>> session["warden.user.user.key"]
=> [[8], "$2a$10$HCv7veSO7LC9Dh1tKD0Jbe"]
Однако, когда я возвращаюсь к localhost: 3000/, current_user
снова становится nil
:
>> session["warden.user.user.key"]
=> nil
>> current_user
=> nil
Не указывает ли пользователь sign_in (guest) переменные сеанса, чтобы current_user
"сохранялся" в запросах?
Что я делаю неправильно?