2016-03-31 54 views
0

我正在浏览Rails的Ruby代码,并不完全了解以下方法。活动记录关联 - 陈旧状态方法定义

的意见说明如下:

目标是陈旧的,如果目标不再指向结果 ,相关foreign_key(S)是指。如果陈旧,所有者的联合方法 将重新加载目标。如果相关的话,最多可以使用 子类来实现stale_state方法。 请注意,如果目标尚未加载,则不会视为过时。

而这里的定义是:

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

做的部分不得到的是为什么它是等于stale_state

+0

也许,如果它已经被标记为失效也没有必要做任何事情(? ) – MikeJRamsey56

回答

2

stale_state将在子类中为某些关联实现。看到http://apidock.com/rails/v4.2.1/ActiveRecord/Associations/Association/stale_state

有它指出

这应实行回报业主相应的键(S)的值,这样,当stale_state是从存储在最后find_target值有所不同,目标是陈旧的。

这只与某些关联有关,这就是默认返回nil的原因。

如果stale_state尚未在sub_class覆盖它将返回零,等于@stale_state这也将是零