【问题标题】:where does validates method reside in ActiveRecord::Base?validates 方法驻留在 ActiveRecord::Base 中的什么位置?
【发布时间】:2010-10-10 14:58:43
【问题描述】:

我了解 Rails 3.0.0 验证方法的文档位于 ActiveModel::Validations::ClassMethods

那时我想知道,继承自 ActiveRecord::Base 的类如何具有 validates 方法?

例如,通常以这样的方式使用验证:

class User < ActiveRecord::Base   
  attr_accessible :name, :email

  validates :name, :presence => true  
end

我查看了类层次结构,似乎SomeModelClass extends ActiveRecord::Base extends Object

Active::Validations::ClassMethods 中的方法如何可用于从 ActiveRecord::Base 继承的模型对象?

非常感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails activerecord ruby-on-rails-3


    【解决方案1】:

    ActiveRecord::Base 调用 Base.class_eval { include Validation }(以及许多其他包含),这使得 ActiveRecord::Validations 中的方法可用作类宏。

    这是实际的行:https://github.com/rails/rails/blob/master/activerecord/lib/active_record/base.rb#L306

    你会在 Rails 上看到这种东西。

    【讨论】:

    • 链接已损坏。已修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 2010-10-24
    相关资源
    最近更新 更多