class Person < ActiveRecord::Base
validates :terms_of_service, :acceptance => true
end
上記では、Rubyの観点からはvalidates
とは何ですか?そのメソッドではありません定義、そのデータ定義や宣言ではないので、明らかにメソッドの呼び出し、クラスの本文にあります。私は、メソッド定義の外でクラスの中で直接そのように呼び出されるメソッドを見たことはありませんでした。私が今行っているRubyプログラミングのチュートリアルでさえ、http://ruby-doc.org/docs/ProgrammingRuby/です。クラス定義のメソッド呼び出し?
したがって、そのメソッド呼び出しがどの時点で呼び出されているかを示します。私はテストとして次のことを試してみました:
class Person
print "cat"
end
#p = Person.new
#q = Person.new
print "cat"
は、任意の実際のPersonオブジェクトが宣言かいないされているかどうかに関係なく、一度だけ実行されているので、クラス定義を解析するだけのとき明らかに、Rubyはメソッドのプリントを見て言います「OK、私は今すぐこれを実行しますが、決してこれを実行しません」。
SOどこ私はvalidates
上記のおかげで何が起こっているか理解するのに役立ちますRubyのドキュメントがあります。
を私が「以来、長い時間がかかりましたRubyのプログラミングを読んでいますが、私はクラス本体のメッセージ送信は非常に早い段階で行われています。特に 'attr_reader'、' attr_writer'、 'attr_accessor'です。 –