validates方法在哪里驻留在ActiveRecord :: Base中?

时间:2010-10-10 14:58:44

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

据我所知,Rails 3.0.0验证方法的文档位于ActiveModel::Validations::ClassMethods

我当时想知道,继承自ActiveRecord::Base的类如何使用validates方法?

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

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

  validates :name, :presence => true  
end

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

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

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:2)

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

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

你会在Rails上看到这种事情。