未定义的方法'remember_token =''find_by_remember_token'-第8章Ruby on Rails教程 [英] Undefined method `remember_token=' 'find_by_remember_token' - Chapter 8 Ruby on Rails Tutorial

查看:105
本文介绍了未定义的方法'remember_token =''find_by_remember_token'-第8章Ruby on Rails教程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试完成Michael Hartl编写的Ruby on Rails教程,并且停留在第8章.运行测试时,我遇到了两个相同的错误:

I am trying to complete the Ruby on Rails Tutorial by Michael Hartl and I am stuck on Chapter 8. I am getting the same two errors when I run my tests:

NoMethodError:未定义的方法remember_token=' ActionView::Template::Error: undefined method find_by_remember_token'

NoMethodError: undefined method remember_token=' ActionView::Template::Error: undefined methodfind_by_remember_token'

我对编码和编程非常陌生,所以我不确定确切发布什么内容,因此人们可以为我的问题提供帮助.我觉得我已经定义了:remember_token和find_by_remember_token.我已经在以下代码中包括了:remember_token出现的每个实例:

I am very new to coding and programming so I'm not sure exactly what to post so people can help with my question. I feel like I've defined both :remember_token and find_by_remember_token. I've included each of the instances where :remember_token appears in my code below:

sample_app/app/helpers/sessions_helper.rb:
    2  
    3    def sign_in(user)
    4:     cookies.permanent[:remember_token] = user.remember_token
    5      self.current_user = user
    6    end
    .
   15  
   16    def current_user
   17:     @current_user ||= User.find_by_remember_token(cookies[:remember_token])
   18    end
   19  
   20    def sign_out
   21      self.current_user = nil
   22:     cookies.delete(:remember_token)
   23    end
   24  end

sample_app/app/models/user.rb:
   16  
   17    before_save { |user| user.email = email.downcase }
   18:   before_save :create_remember_token
   19  
   20    validates :name, presence: true, length: { maximum: 50 }
   ..
   27    private
   28  
   29:     def create_remember_token
   30:       self.remember_token = SecureRandom.urlsafe_base64
   31      end
   32  end

sample_app/db/migrate/[timestamp]_add_remember_token_to_users.rb:
    1  class AddRememberTokenToUsers < ActiveRecord::Migration
    2    def change
    3:     add_column :users, :remember_token, :string
    4:     add_index  :users, :remember_token
    5    end
    6  end

sample_app/spec/models/user_spec.rb:
   27    it { should respond_to(:password) }
   28    it { should respond_to(:password_confirmation) }
   29:   it { should respond_to(:remember_token) }
   30    it { should respond_to(:authenticate) }
   31  
   ..
  125    describe "remember token" do
  126      before { @user.save }
  127:     its(:remember_token) { should_not be_blank }
  128    end
  129  end

sample_app/spec/support/utilities.rb:
    7    click_button "Sign in"
    8    # Sign in when not using Capybara as well.
    9:   cookies[:remember_token] = user.remember_token
   10  end`

推荐答案

我也遇到了这个问题.经过一番谷歌搜索后,我发现运行这些终端命令...

I was having this problem as well. After some googling I found that running these terminal commands...

rake db:drop
rake db:create
rake db:migrate

...让我重新启动.

...got me up and running again.

希望它也对您有用.我知道这有多令人沮丧.

Hoping it works for you, too. I know how frustrating it can be.

这篇关于未定义的方法'remember_token =''find_by_remember_token'-第8章Ruby on Rails教程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆