2015-04-25 38 views
0

我正在做enter link description here的第10章。我得到了同樣的錯誤提及enter link description hereNoMethodError:undefined method reset_sent_at hartle教程

PasswordResetsTest#test_password_resets: 
NoMethodError: undefined method `reset_sent_at=' for #<User:0xccd47c0> 
    app/models/user.rb:66:in `create_reset_digest' 
    app/controllers/password_resets_controller.rb:12:in `create' 
    test/integration/password_resets_test.rb:17:in `block in <class:PasswordResetsTest>' 

我嘗試做答案中提到的一切。我做 第一件事情是:

rails generate migration add_reset_to_users reset_digest:string reset_sent_at:datetime 

和答案是:

Another migration is already named add_reset_to_users: 

,所以我敢肯定,我之前的遷移。 這個_add_reset_to_users.rb文件在migrate文件夾中。

class AddResetToUsers < ActiveRecord::Migration 
    def change 
    add_column :users, :reset_digest, :string 
    end 
end 

然後我試圖重新啓動我的Rails服務器。(我不知道如果我這樣做是正確的),使用

rails server 

,然後關閉服務器。 非他們工作。我仍然遇到同樣的錯誤。

+0

你運行數據庫遷移'$ rake db:migrate'嗎?如果沒有正在進行的遷移,它應該不會輸出。同時檢查'db/migrations'中的遷移文件,其中文件名以'add_reset_to_users.rb'結尾。 – max

+0

是的,我把它添加到我的文章中。耙db:遷移給我沒有輸出。 – Hanna

+0

嘗試'rake db:test:prepare',它會給出折舊警告,但我有時會發現Rails無法自動維護測試模式 – max

回答

2

Another migration is already named add_reset_to_users:

您已經創建的遷移以前,正如你指出,但這種遷移不包括添加reset_sent_at列。

在這一點上,最簡單的做法是創建一個新的遷移來添加缺失的列。

rails generate migration add_reset_sent_at_to_users reset_sent_at:datetime 
+0

非常感謝!有效! – Hanna

+0

我應該發現那一個,很好 – max

相關問題