我正在关注迈克尔·哈特尔的导轨教程,并且遇到了一个似乎没有意义的障碍。
我在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类中。我错过了什么?
答案 0 :(得分:1)
每当Rails加载一个应用程序时,它都会加载内存中的所有类。
Rails控制台调用Rails.application.initialize!
并将加载应用程序的当前代码。
Rails具有很好的功能,供开发人员在开发模式下使用,尤其是spring。
https://github.com/rails/spring
但是,这仅适用于开发服务器而非控制台。
有一个区别,因为当Rails加载服务器时,则定义了Rails::Server
。控制台定义Rails::Console
。
使用reload!
可以在控制台中反映代码更改。
这将反映控制台中的代码更改,但有一个问题。
旧对象不会更改,为此您必须使用test.reload
。