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类操作的内部方法。我真的不明白它是怎么叫的。