ruby-on-rails – 验证如何在ActiveRecord中运行?

要在Rails中的Model中设置验证,我应该写如下:

class Post < ActiveRecord::Base
  validates :name,  :presence => true
  validates :title, :presence => true,
                    :length => { :minimum => 5 }
end

我无法弄清楚它是如何工作的.看起来它正在调用一个名为validates的方法并且正在传递参数,但这不可能是因为,我相信我不能直接在类体中调用方法.

那么这里究竟发生了什么?

更新

从答案看来,这似乎是从固有的Base类调用一个方法,但为什么这不起作用?:

class Parent
  def foo
    puts "called foo"
  end
end

class Child < Parent
 foo
 foo
end

最佳答案 你写道“但这不可能是因为(我相信)你不能直接在类体中调用方法.”

但事实并非如此 – 代码在加载类时正在执行

考虑一下:

class Hi
  puts "yo"
end

你会得到:

yo
 => nil

puts在加载时执行.因此,您可以使用它来创建其他方法或执行您需要的任何操作.

点赞