2016-03-31 5 views
0

RubyのRailsコードを実行していて、次のメソッドをあまり理解していません。アクティブレコードアソシエーティブステートメソッド定義

コメントは、以下の状態:

関連FOREIGN_KEY(単数または複数)を指すことがレコード(複数可) にターゲットがもはや点場合、ターゲットが古いです。無効な場合、所有者のアソシエータメソッド は、ターゲットをリロードします。関連する場合、stale_stateメソッドを実装するのは最大で サブクラスです。 ターゲットがロードされていない場合、ターゲットは古くなったとみなされないことに注意してください。

def stale_target? 
    !inversed && loaded? && @stale_state != stale_state 
end 

I がやった部分がない GETは、なぜそれが等しくないstale_stateになっている。

そして、ここでは定義ですか?

+0

nilになる@stale_stateに等しいでしょうか? ) – MikeJRamsey56

答えて

2

stale_stateは、特定の関連付けのためにsub_classに実装されます。それは、stale_stateが最後find_targetに格納された値と異なる場合ように、これは、所有者に該当するキー(S)の値を返すために実装する必要があります

を述べてありhttp://apidock.com/rails/v4.2.1/ActiveRecord/Associations/Association/stale_state

を見ますターゲットは古くなっています。

これは特定の関連付けにのみ関連しているため、デフォルトではnilが返されます。 stale_stateがsub_classで上書きされていない場合

nilを返し、それは既に(何もする必要はありません失効としてマークされている場合も、おそらく