0

RoR には次のコードがあります。

class Product < ActiveRecord::Base
  validates :title, :description, :image_url, presence: true
end

Ruby の本を何冊か読んだことがありますが、OOP 段落には、クラス (他のメソッドではない) 本体でクラスのメソッドを実行することに関する情報はありませんでした! それは何ですか?それはどのように機能しますか?このメソッドはいつ実行されますか? この質問ではっきりさせてください。ありがとう。

4

1 に答える 1

2

メソッドは呼び出されると実行されます。クラス本体のコンテキストでは、selfそのクラスになります。selfas レシーバーは省略できるので、ここではorvalidatesと同じです。のクラス メソッドであり、クラス定義中に呼び出されます。 Product.validates ...self.validates ...validatesActive::Base


私の理解ではself、暗黙の受信者は、それがどこにあるかによって異なることを意味します。

module Foo
  # module body
  def # method name
    # method body
  end
end
  1. モジュール本体内
    • self: モジュール
    • 暗黙の受信者: モジュール
  2. メソッド名で
    • self: モジュール
    • 暗黙の受信者: クラスのインスタンス
  3. メソッド本体内
    • self: メソッド名の受信者
    • 暗黙の受信者: メソッド名の受信者
于 2013-07-20T06:49:14.580 に答える