Rails教程中的未定义方法

时间:2016-08-11 20:44:37

标签: ruby-on-rails

我正在关注迈克尔·哈特尔的导轨教程,并且遇到了一个似乎没有意义的障碍。

我在User类中添加了一个新方法:

def full_name
  "test"
end

所以,当我这样做时: test = User.new(name: 'Phil Collins', email: 't@gen.com') test.full_name

我收到错误NoMethodError:undefined method`full_name'

咦?它完全在User类中。我错过了什么?

1 个答案:

答案 0 :(得分:1)

每当Rails加载一个应用程序时,它都会加载内存中的所有类。

Rails控制台调用Rails.application.initialize!并将加载应用程序的当前代码。

Rails具有很好的功能,供开发人员在开发模式下使用,尤其是spring。

https://github.com/rails/spring

但是,这仅适用于开发服务器而非控制台。

有一个区别,因为当Rails加载服务器时,则定义了Rails::Server。控制台定义Rails::Console

使用reload!可以在控制台中反映代码更改。

这将反映控制台中的代码更改,但有一个问题。

旧对象不会更改,为此您必须使用test.reload