2016-08-11 62 views
0

我正在關注Michael Hartl的rails教程,並且遇到了似乎沒有道理的障礙。Rails教程中的未定義方法

我添加了一個新的方法到User類:

def full_name 
    "test" 
end 

所以,當我做這樣的事情: test = User.new(name: 'Phil Collins', email: '[email protected]') test.full_name

我得到的錯誤NoMethodError:未定義的方法`FULL_NAME」

咦?它完全在User類中。我錯過了什麼?

+1

沒有任何上下文沒有辦法告訴。你在Rails控制檯嗎?你重新加載或重新啓動? –

+0

是的,我在軌道控制檯。讓我重新啓動控制檯並查看。奇怪的是,我仍然可以在該課程中運行其他方法... – echoBr00tal

+0

因此...在飛行中添加新方法違反了軌道控制檯中的規則?你必須再次要求它看起來像。說得通。我在CLI中沒有很多經驗。 – echoBr00tal

回答

1

每當Rails加載應用程序時,它將加載內存中的所有類。

Rails控制檯調用Rails.application.initialize!並將加載應用程序的當前代碼。

Rails具有很好的功能,可供開發人員在開發模式下使用,特別是彈簧。

https://github.com/rails/spring

不過,這隻適用於開發服務器沒有控制檯。

有一個區別,因爲當Rails加載服務器時,則定義了Rails::Server。控制檯定義了Rails::Console

有一種方法可以通過使用reload!來反映控制檯中的代碼更改。

這將反映控制檯中的代碼更改,但有一個問題。

舊對象不會改變,因此您必須使用test.reload

相關問題