ホーム>source

次の行を作成する方法を理解するのに苦労しています。

<前>ウィズウィズ

次のコードはRailsで完全に実行されるため、これはクラスメソッドであると私は思います。

<前>ウィズウィズ

しかし、Railsのソースコードに移動すると、その validates :email, presence: true クラスメソッドではなくインスタンスメソッドであり、 class User < ActiveRecord::Base self.validates :email, presence: true end クラス定義では、それがクラスメソッドであるという印象を与えます。

これはRailsでの定義方法です。

<前>ウィズウィズ

実際には何ですか?

validates
あなたの答え
  • 解決した方法 # 1

    これはクラスインスタンス 方法 :)

    Sergioがコメントで指摘しているように、Rubyのすべてのクラスはオブジェクトです(クラス Class のインスタンス) )、 validates   Class の方法です のインスタンス。

    あなたの User  クラスは ActiveRecord::Base から多くのものを継承します 。この継承されたものの中に検証モジュールがあります。


    サイドノート: についてのこのクールなビデオを見るRubyオブジェクトモデル デイブトーマス-物事ははるかに明らかになります!

  • 解決した方法 # 2

    この記事は、これらすべてが舞台裏でどのように機能するかを理解し、コードで同様にカスタムメソッドを定義するのに役立ちました。

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ PDFはページを作成しません。 Rのこのコードの何が問題になっていますか?