活动记录关联 - 陈旧状态方法定义

时间:2016-03-31 01:24:31

标签: ruby-on-rails ruby

我正在浏览Rails的Ruby代码,并且还不太了解以下方法。

评论声明如下:

  

如果目标不再指向记录,则目标已过时   相关的外键指的是。如果陈旧,协会   所有者的访问器方法将重新加载目标。取决于   子类,如果相关,则实现stale_state方法。         请注意,如果尚未加载目标,则不会将其视为过时。

这是定义:

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

没有获取的部分是为什么 NOT 等于stale_state

1 个答案:

答案 0 :(得分:2)

对于某些关联,

stale_state将在sub_class中实现。见http://apidock.com/rails/v4.2.1/ActiveRecord/Associations/Association/stale_state

在那里陈述

  

这应该被实现为返回所有者上相关键的值,这样当stale_state与最后一个find_target上存储的值不同时,目标就是陈旧的。

     

这仅与某些关联相关,这就是默认情况下返回nil的原因。

如果没有在sub_class中重写stale_state,它将返回nil并且等于@stale_state,它也将是nil