首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在模型实例上使用ActiveModel验证HelperMethods?

在模型实例上使用ActiveModel验证HelperMethods?
EN

Stack Overflow用户
提问于 2014-02-20 06:09:33
回答 1查看 253关注 0票数 2

查看ActiveModel::Validations的rails源代码,底层模型中包含和扩展了HelperMethods模块:

代码语言:javascript
复制
module Validations
  extend ActiveSupport::Concern

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

    extend  HelperMethods
    include HelperMethods
...

理论上,这不仅允许您将像validates_presence_of这样的助手方法调用为类宏(如所有标准示例中所示),而且还可以在模型实例上直接调用这些助手方法:

代码语言:javascript
复制
myobject.validates_presence_of :name

在自定义验证器的上下文中,我可以看到这种方法是有用的,它希望利用一些现有的助手方法:

代码语言:javascript
复制
class CustomValidator < ActiveModel::Validator
  def validate(record)
    record.validates_presence_of :name
    record.validates_acceptance_of :terms
    ...
  end
end

不管这是否是鼓励的行为,直到Rails 4.1中的特定验证器发生一些更改之后,它才能正常工作。因此,我的问题是,如果rails不支持以这种方式调用这些助手方法(作为模型上的实例方法),为什么它们包含在模型中而不是只是扩展呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-20 22:57:15

因此,根据大约4年前的提交,确实打算使这些验证助手既可以从类调用,也可以从实例调用:

https://github.com/rails/rails/commit/9131a88bb8e82f139ec49b4057fb6065ba0a2c6a

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21899619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档