2013-03-08 6 views
3

Я пытаюсь завершить учебник Ruby on Rails Майкла Хартла, и я застрял в главе 8. Я получаю те же две ошибки, когда я запускаю мои тесты:Неопределенный метод `remember_token = '' find_by_remember_token '- Глава 8 Учебник по Ruby on Rails

NoMethodError: не определен метод remember_token=' ActionView::Template::Error: undefined method find_by_remember_token»

Я очень новой для кодирования и программирования, так что я не знаю точно, что размещать таким образом люди могут помочь с моим вопросом. Я чувствую, что я определил оба: remember_token и find_by_remember_token. Я включил каждый из случаев, когда: remember_token появляется в моем коде ниже:

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` 

ответ

7

Я с этой проблемой, а также. После некоторых поисковых запросов я обнаружил, что запуск этих команд терминала ...

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

... снова запустил меня.

Надеясь, что это сработает и для вас. Я знаю, как это может быть неприятно.

+0

Yup, это сработало для меня. Благодаря! – wikichen

1

Да, эта ошибка объясняется тем, что у вас нет атрибута remember_token в Пользователь Модель.

Убедитесь, что у вас были файлы миграции правой базы данных и чем сделать:

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

или сокращенно:

rake db:reset 
1

я забыл включить attr_accessor: remember_token в модели пользователя приложения/model/user.rb

поэтому испытание давало мне ошибку:

Неопределенный метод `remember_token = '

 Смежные вопросы

  • Нет связанных вопросов^_^