Ruby on Rails - 需要重新加载模型时的不一致性?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ruby on Rails - 需要重新加载模型时的不一致性?相关的知识,希望对你有一定的参考价值。
我找到了一些让我对Rails不熟悉的东西。我被告知每当我对模型进行更改时,我需要在控制台中执行reload!
。
我们假设在这两种情况之前我打电话给reload!
。
假设我有方案A,其模型具有特定的语法错误:
class Article < ActiveRecord::Base
validator :title, presence: true
end
运行Article.new(title: "Test 1")
会抛出一个NoMethodError
,这是可以理解的。但是,如果我然后进入并修复错误,即使我不运行reload!
,运行Article.new(title: "Test 1")
现在也可以。
情景B,走向相反的方向。我有一个具有正确语法的模型:
class Article < ActiveRecord::Base
validates :title, presence: true
end
运行Article.new(title: "Test 1")
将没有错误,因为它应该。但是,如果我进去并将validates
改为validator
。如果我不运行reload!
,尽管Article.new(title: "Test 1")
文件有语法错误,运行article.rb
仍然有效。直到我明确地运行reload!
,我现在得到一个NoMethodError
。
这到底发生了什么?我知道这是非常具体的,但我不明白为什么会这样。似乎有时候你必须运行reload!
来更新模型(比如场景B),有时候,就像在场景A中一样,你没有。
在您的第一个示例中,Rails无法加载该类,因为它引发了错误。修复错误后,不需要重新加载类,因为之前没有成功加载类。
在第二个示例中,该类已成功加载。因此,您需要调用reload!
告诉Rails将类重新加载到内存中。
以上是关于Ruby on Rails - 需要重新加载模型时的不一致性?的主要内容,如果未能解决你的问题,请参考以下文章