Я создаю приложение Rails, содержащее Login. В разработке все нормально. Не удается войти в систему (Heroku).
Поскольку я новичок в RoR, я следую этому Основному учебному пособию . Приложение содержит модель «Пользователь». У пользователя есть логический атрибут «активирован», поскольку учетная запись должна быть активирована после регистрации. Во время входа в систему появляется утверждение (см. Session_controller.rb):
if user.activated?
, что верно в разработке и ложно в производстве.
Я запихнул базу данных с seed.rb. На других страницах я вижу контент, также инициализированный с помощью seed.rb, так что я думаю, что это не проблема общей базы данных.
Поскольку данные, кажется, в порядке и работают в процессе разработки, я предполагаю, что просто что-то упустил, что трудно обнаружить для меня, как новичка, и, надеюсь, легко обнаружить для опытного программиста.
Вот часть моего кода. Скажи, если тебе нужно больше.
sessions_controller.rb:
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
if user.activated?
log_in user
params[:session][:remember_me] == '1' ? remember(user) : forget(user)
redirect_to changenews_path
else
message = "Account not activated. "
message += "Check your email for the activation link."
flash[:warning] = message
redirect_to root_url
end
else
flash.now[:danger] = 'Invalid email/password combination'
render 'new'
end
end
Это проверяет, активирован ли пользователь, который входит в систему. В производстве это приводит к «else> message [...]».
мой Gemfile:
source 'https://rubygems.org'
gem 'rails', ' 5.1.6'
gem 'bootstrap', ' 4.2.1'
gem 'puma', ' 3.9.1'
gem 'sass-rails', ' 5.0.6'
gem 'uglifier', ' 3.2.0'
gem 'coffee-rails', ' 4.2.2'
gem 'jquery-rails', ' 3.1.0'
gem 'turbolinks', ' 5.0.1'
gem 'jbuilder', ' 2.7.0'
gem 'coffee-script-source', ' 1.8.0'
gem 'bcrypt', ' 3.1.12'
gem 'popper_js', ' 1.14.5'
gem 'font-awesome-sass', ' 5.8.0'
group :development, :test do
gem 'sqlite3', ' 1.3.13'
gem 'byebug', ' 9.0.6', platform: :mri
end
group :development do
gem 'web-console', ' 3.5.1'
gem 'listen', ' 3.1.5'
gem 'spring', ' 2.0.2'
gem 'spring-watcher-listen', ' 2.0.1'
end
group :test do
gem 'rails-controller-testing', '1.0.2'
gem 'minitest', '5.10.3'
gem 'minitest-reporters', '1.1.14'
gem 'guard', '2.13.0'
gem 'guard-minitest', '2.4.4'
end
group :production do
gem 'pg', '0.18.4'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
Я попытался установить все драгоценные камни на последнюю версию ('> = X.Y.Z') и выполнить "комплектную установку", но эффекта не было.
и журнал Heroku (извлечение):
:23.352114+00:00 app[web.1]: I, [:23.352005 #4] INFO -- : [shortened] Started POST "/login" for 77.183.95.212 at 2019-04-09 11:43:23 +0000
:23.353232+00:00 app[web.1]: I, [:23.353123 #4] INFO -- : [shortened] Processing by SessionsController#create as HTML
:23.353509+00:00 app[web.1]: I, [:23.353266 #4] INFO -- : [shortened] Parameters: {"utf8"=>"✓", "authenticity_token"=>"shortened", "session"=>{"email"=>"mymail@mymail.de", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
:23.356478+00:00 app[web.1]: D, [:23.356409 #4] DEBUG -- : [shortened] [1m[36mUser Load (0.8ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."email" = $1 LIMIT $2[0m [["email", "mymail@mymail.de"], ["LIMIT", 1]]
:23.432392+00:00 app[web.1]: I, [:23.432248 #4] INFO -- : [shortened] Redirected to https://myappname.herokuapp.com/
Я не могу получить информацию из сообщения отладки. И я понятия не имею, что означает «LIMIT». Я надеюсь, что кто-то из вас знает ответ на мою проблему.
Так что обычно я ожидаю, что вход в систему будет успешным, поскольку база данных, кажется, в порядке. В настоящее время пользователь активирован? в Героку ложь.
Заранее спасибо!