我究竟在哪里为config / application.rb中的自定义验证器设置了自动加载路径

时间:2016-03-12 04:13:06

标签: ruby-on-rails custom-validators

每次我使用NumberValidator调用validates_。我得到一个未初始化的常量错误。我在“app”目录下创建了一个名为validators的目录。这是我到目前为止所做的。

这是我的模特

react-intl

这是我的验证器文件

class Worker < ActiveRecord::Base
    include ActiveModel::Validations
validates_with NumberValidator

end

我已经重启了我的服务器,我只是不确定我做错了什么

1 个答案:

答案 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,以便重新启动!)。

注意:

  1. 需要在spring stop下添加任何内容到您的应用配置中,这样您就可以删除app行。
  2. config.autoload_paths已包含ActiveRecord::Base,因此您也可以从ActiveModel::Validations课程中删除include
  3. 有关此过程如何运作的详细信息,请查看Rails指南中的Autoloading and Reloading Constants页。