В настоящее время я изучаю учебник по Ruby on Rails on Rails.
Я провел тестирование rails, а затем получил эту ошибку.
журнал ошибок
UsersSignupTest#test_valid_signup_information_with_account_activation:
NameError: uninitialized constant User::FILL_IN
app/models/user.rb:42:in `activate'
app/controllers/account_activations_controller.rb:6:in `edit'
test/integration/users_signup_test.rb:39:in `block in <class:UsersSignupTest>'
Я делаюне понимаю смысла этой ошибки.Я должен инициализировать constant User::FILL_IN
вероятно.
app / models / user.rb
class User < ApplicationRecord
attr_accessor :remember_token, :activation_token
before_save :downcase_email
before_create :create_activation_digest
....
def activate
update_columns(activated:FILL_IN, activated_at:FILL_IN)
end
app / controllers / account_activations_controller.rb
class AccountActivationsController < ApplicationController
def edit
user = User.find_by(email: params[:email])
if user && !user.activated? && user.authenticated?(:activation, params[:id])
user.activate
log_in user
flash[:success] = "Account activated!"
redirect_to user
else
flash[:danger] = "Invalid activation link"
redirect_to root_url
end
end
end
тест / интеграция/users_signup_test.rb
require 'test_helper'
class UsersSignupTest < ActionDispatch::IntegrationTest
...
assert_equal 1, ActionMailer::Base.deliveries.size
user = assigns(:user)
assert_not user.activated?
log_in_as(user)
assert_not is_logged_in?
get edit_account_activation_path("invalid token", email: user.email)
assert_not is_logged_in?
get edit_account_activation_path(user.activation_token, email: 'wrong')
assert_not is_logged_in?
get edit_account_activation_path(user.activation_token, email: user.email)
assert user.reload.activated?
follow_redirect!
assert_template 'users/show'
assert is_logged_in?
end
Не могли бы вы помочь мне решить эту проблему?