class Person < ActiveRecord::Base
validates :terms_of_service, :acceptance => true
end
В приведенном выше, что такое validates
с точки зрения Ruby? Его не метод определение, его не определение данных или декларация, поэтому, очевидно, его метод invocation, прямо там, в теле класса. Я никогда не видел метод, вызываемый таким же образом непосредственно в классе (т. Е. Вне определения метода), даже в учебнике по программированию Ruby, который я сейчас просматриваю: http://ruby-doc.org/docs/ProgrammingRuby/.вызов метода в определении класса?
Итак, если это вызов метода, в какой момент он вызывается. Я попробовал следующее как тест:
class Person
print "cat"
end
#p = Person.new
#q = Person.new
print "cat"
в настоящее время выполняется только один раз, независимо от того, какие реальные объекты Person объявляются или нет, так что, очевидно, только при анализе определения класса, Ruby видит метод печати и говорит , «ОК, я просто продолжу и выполняю это сейчас», но никогда не делает этого снова.
SO где документация рубин, которая поможет мне понять, что происходит с validates
выше
Спасибо.
Это было долгое время, так как я я прочитал «Программирование Ruby», но я * довольно * уверен, что сообщения, отправленные в классах, рассматриваются очень рано, особенно 'attr_reader',' attr_writer' и 'attr_accessor'. –