Uvádím zde řešení cvičení k tutoriálu Ruby on Rails od Michaela Hartla – kapitoly 8.6 úlohy 2.
Listing 8.61
Místo ? bude v kódu uveden @. Kód souboru app/controllers/sessions_controller.rb bude následující:
def create @user = User.find_by(email: params[:session][:email].downcase) if @user && @user.authenticate(params[:session][:password]) log_in @user params[:session][:remember_me] == '1' ? remember(@user) : forget(@user) redirect_to @user else flash.now[:danger] = 'Invalid email/password combination' render 'new' end end
Listing 8.62
Kód souboru test/integration/users_login_test.rb bude upraven následovně:
test "login with remembering" do log_in_as(@user, remember_me: '1') assert_equal assigns(:user).remember_token, cookies['remember_token'] end
Řešení je také popsáno na stránce How to access virtual remember_token attribute in the integration test?.