要在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在加载时执行.因此,您可以使用它来创建其他方法或执行您需要的任何操作.