invocação de método na definição de classe?

class Person < ActiveRecord::Base
  validates :terms_of_service, :acceptance => true
end

No acima, o que évalidates do ponto de vista de Ruby? Não é um métododefiniçã, não é uma definição ou declaração de dados, portanto é evidentemente um métodoinvocaçã, bem no corpo da classe. Nunca vi um método chamado assim diretamente em uma classe (ou seja, fora de uma definição de método), nem mesmo no tutorial de programação em Ruby que estou passando agora:http: //ruby-doc.org/docs/ProgrammingRuby.

Então, se é uma invocação de método, em que ponto está sendo invocada. Eu tentei o seguinte como teste:

class Person   

  print "cat"

end

#p = Person.new
#q = Person.new

print "cat" está sendo executado exatamente uma vez, independentemente se algum objeto Person real estiver sendo declarado ou não, portanto, evidentemente, ao analisar a definição de classe, Ruby vê o método impresso e diz: "OK, eu vou continuar e executar isso agora", mas nunca faz isso de novo.

SO onde está a documentação do Ruby que me ajudará a entender o que está acontecendo com ovalidates acim

Obrigado

questionAnswers(2)

yourAnswerToTheQuestion