Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在模型实例上使用ActiveModel验证帮助方法?_Ruby On Rails_Validation_Activemodel - Fatal编程技术网

Ruby on rails 在模型实例上使用ActiveModel验证帮助方法?

Ruby on rails 在模型实例上使用ActiveModel验证帮助方法?,ruby-on-rails,validation,activemodel,Ruby On Rails,Validation,Activemodel,查看ActiveModel::Validations的rails源代码,HelperMethods模块在基础模型中包括并扩展: module Validations extend ActiveSupport::Concern included do extend ActiveModel::Callbacks extend ActiveModel::Translation extend HelperMethods include HelperMetho

查看ActiveModel::Validations的rails源代码,HelperMethods模块在基础模型中包括并扩展:

module Validations
  extend ActiveSupport::Concern

  included do
    extend ActiveModel::Callbacks
    extend ActiveModel::Translation

    extend  HelperMethods
    include HelperMethods
...
从理论上讲,这不仅允许您调用助手方法,如
验证为类宏(如所有标准示例所示),还允许您直接在模型实例上调用这些助手方法:

myobject.validates_presence_of :name
我认为这在一个想要利用一些现有帮助器方法的自定义验证器的上下文中是有用的:

class CustomValidator < ActiveModel::Validator
  def validate(record)
    record.validates_presence_of :name
    record.validates_acceptance_of :terms
    ...
  end
end
class CustomValidator

无论这种行为是否受到鼓励,在Rails4.1中对特定的验证器进行了一些更改之前,它似乎是有效的。所以我的问题是,如果rails不支持以这种方式调用这些helper方法(作为模型上的实例方法),为什么它们被包括在模型中而不是仅仅被扩展?

那么根据大约4年前的提交,确实,我们打算让这些验证帮助程序可以从类和实例调用:

myobject.validates_presence_of :name

我正在评估4.1中所做的更改,以了解如何使这些受影响的验证方法重新工作