In diesem Kapitel werden Erinnerungstoken hinzugefügt, um sicherzustellen, dass der Benutzeranmeldungsstatus gespeichert wird und dass die Sitzung nur gelöscht wird, wenn der Benutzer sich ausdrücklich abmeldet. Ich verstehe, wie wichtig es ist, diese Funktion in meiner App zu haben, also stelle sicher, dass sie richtig funktioniert. Ich bin ein paar Fehler immer aber, wenn ichKapitel 8 Rails Tutorial Token-Fehler speichern
$ bundle exec rspec spec/
laufen und ich vermute, sie haben mit meinem Benutzermodell zu tun, da sie alle bis auf einen enthalten:
NoMethodError:
undefined method `remember_token=' for #<User:...>
und das letzte enthält
Failure/Error: it { should respond_to(:remember_token) }
und zeigen Sie dann auf meine user_spec.rb, user.rb und und authentication_pages_spec.rb-Dateien, die ich die meisten (die relevanten Teile) hier aufgenommen haben.
user.rb:
# == Schema Information
#
# Table name: users
#
# id :integer not null, primary key
# name :string(255)
# email :string(255)
# created_at :datetime not null
# updated_at :datetime not null
#
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_secure_password
before_save { |user| user.email = email.downcase }
before_save :create_remember_token
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true,
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
validates :password, length: { minimum: 6 }
validates :password_confirmation, presence: true
private
def create_remember_token
self.remember_token = SecureRandom.urlsafe_base64
end
end
authentication_pages_spec.rb:
require 'spec_helper'
describe "Authentication" do
subject {page}
describe "signin page" do
before { visit signin_path }
it {should have_selector('h1', text: 'Sign in')}
it {should have_selector('title', text: 'Sign in')}
end
describe "signin" do
before {visit signin_path}
describe "with invalid information" do
before {click_button "Sign in"}
it {should have_selector('title', text: 'Sign in')}
it {should have_selector('div.alert.alert-error', text: 'Invalid')}
describe "after visiting another page" do
before { click_link "Home" }
it { should_not have_selector('div.alert.alert-error') }
end
end
describe "with valid information" do
let(:user) { FactoryGirl.create(:user) }
before do
fill_in "Email", with: user.email
fill_in "Password", with: user.password
click_button "Sign in"
end
it { should have_selector('title', text: user.name) }
it { should have_link('Profile', href: user_path(user)) }
it { should have_link('Sign out', href: signout_path) }
it { should_not have_link('Sign in', href: signin_path) }
end
end
end
und Anfang user_spec.rb:
# == Schema Information
#
# Table name: users
#
# id :integer not null, primary key
# name :string(255)
# email :string(255)
# created_at :datetime not null
# updated_at :datetime not null
#
require 'spec_helper'
describe User do
before do
@user = User.new(name: "Example User", email: "[email protected]",
password: "foobar", password_confirmation: "foobar")
end
subject { @user }
it { should respond_to(:name) }
it { should respond_to(:email) }
it { should be_valid }
it { should respond_to(:password_digest) }
it { should respond_to(:password) }
it { should respond_to(:password_confirmation) }
it { should respond_to(:authenticate) }
it { should respond_to(:remember_token) }
describe "remember token" do
before { @user.save }
its(:remember_token) { should_not be_blank }
end
.
.
.
Jede Hilfe sehr geschätzt werden würde!
Das behob mein Problem, wie es nur auf Heroku war. Ich habe versucht, mich vor der Migration zu registrieren. Danach würde sogar 'heroku run db: migrate' das Problem nicht beheben. Wie immer hätte ich versuchen sollen, das Gerät aus- und wieder einzuschalten. – brodney