2016-08-11 59 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

相关问题