每次我使用NumberValidator调用validates_。我得到一个未初始化的常量错误。我在“app”目录下创建了一个名为validators的目录。这是我到目前为止所做的。
这是我的模特
react-intl
这是我的验证器文件
class Worker < ActiveRecord::Base
include ActiveModel::Validations
validates_with NumberValidator
end
我已经重启了我的服务器,我只是不确定我做错了什么
答案 0 :(得分:2)
如果您遵循预期的结构,Rails将自动加载public PackageChangeReceiver(@ForApplication Context context) {
super();
IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
filter.addDataScheme("package");
context.registerReceiver(this, filter);
}
下的任何内容。 Rails的做法是使用常量自动加载,它将常量(例如app/
)映射到文件名,例如自动加载路径中目录下的MyValidator
。
为了让Rails加载my_validator.rb
,您应该将文件命名为NumberValidator
并将其放在自动加载路径中的文件夹中,例如number_validator.rb
。如果在app/validators/number_validator.rb
下添加了一个目录,则需要重新启动服务器,因为这些目录在引导时已初始化(如果使用spring,请务必运行app
,以便重新启动!)。
注意:
spring stop
下添加任何内容到您的应用配置中,这样您就可以删除app
行。config.autoload_paths
已包含ActiveRecord::Base
,因此您也可以从ActiveModel::Validations
课程中删除include
。有关此过程如何运作的详细信息,请查看Rails指南中的Autoloading and Reloading Constants页。