Ruby on rails caches\u action if子句中的proc是如何执行的

Ruby on rails caches\u action if子句中的proc是如何执行的,ruby-on-rails,caching,lambda,Ruby On Rails,Caching,Lambda,我有一个新来的问题,我想不通。对于caches\u操作方法,if条件下的Proc是如何执行的 例如: caches_action :show, :if=>Proc.new{|x| something} 我不明白这是怎么叫的。 我知道我可以执行定义为 proc=proc.newby proc.call 所以我不明白这个怎么叫 第二,我如何通过这样的条件 如果已登录? 如果您能在这方面提供帮助,我将不胜感激。参数pass-on-Proc是当前对象。因此,在您的示例中,它是x变量。因此,您可以

我有一个新来的问题,我想不通。对于
caches\u操作
方法,if条件下的Proc是如何执行的

例如:

caches_action :show, :if=>Proc.new{|x| something}
我不明白这是怎么叫的。 我知道我可以执行定义为

proc=proc.new
by
proc.call

所以我不明白这个怎么叫

第二,我如何通过这样的条件

如果已登录?


如果您能在这方面提供帮助,我将不胜感激。参数pass-on-Proc是当前对象。因此,在您的示例中,它是
x
变量。因此,您可以调用此实例的所有方法。如果您想调用
logged\u in?
方法。可以,因为它是一个公共实例

caches_action :show, :if => Proc.new{|x| x.logged_in? }
在筛选器之前调用proc。caches\u操作类似于before\u过滤器。此筛选器检查是否已存在有关此操作的缓存。除非,否则缓存将被生成


使用
:if
仅当if为调用时才调用过滤器。因此,过程是调用。如果不使用Proc,
:If
值仅在服务器启动时读取文件时解释。

参数pass-on-Proc是当前对象。因此,在您的示例中,它是
x
变量。因此,您可以调用此实例的所有方法。如果您想调用
logged\u in?
方法。可以,因为它是一个公共实例

caches_action :show, :if => Proc.new{|x| x.logged_in? }
在筛选器之前调用proc。caches\u操作类似于before\u过滤器。此筛选器检查是否已存在有关此操作的缓存。除非,否则缓存将被生成


使用
:if
仅当if为调用时才调用过滤器。因此,过程是调用。如果不使用Proc,
:If
值仅在服务器启动时读取文件时解释。

:If=>Proc{logged\u in?}

我的理解是,你正在发送一个块来评估它。因此,如果您在助手或登录的控制器中有一个方法,它将调用该方法并进行计算。我相信是controller类在调用proc

来自文件;如果给定一个块,则使用当前控制器实例调用该块


:if=>proc{logged\u in?}

我的理解是,你正在发送一个块来评估它。因此,如果您在助手或登录的控制器中有一个方法,它将调用该方法并进行计算。我相信是controller类在调用proc

来自文件;如果给定一个块,则使用当前控制器实例调用该块


谢谢您的回复。我还想知道是什么调用了Proc或者它是如何被调用的。是否存在执行Proc.new.call类操作的内部方法。我真的不明白它是怎么叫的。谢谢你的回复。我还想知道是什么调用了Proc或者它是如何被调用的。是否存在执行Proc.new.call类操作的内部方法。我真的不明白它是怎么叫的。