Sid*_*Sid 0 lambda caching ruby-on-rails
我有一个新手问题,我无法理解。if 条件中的 Proc 是如何为该caches_action方法执行的。
例如:
caches_action :show, :if=>Proc.new{|x| something}
Run Code Online (Sandbox Code Playgroud)
我不明白的是它是如何被调用的。我知道我可以执行定义为的过程
proc= Proc.new经过
proc.call
所以我不明白这是如何调用的。
其次,我如何通过条件
if logged_in?
如果有任何帮助,我将不胜感激
Proc上传递的参数是当前对象。所以在你的例子中它是x变量。这样就可以调用该实例的所有方法。如果你想调用该logged_in?方法。你可以,因为它是公共实例
caches_action :show, :if => Proc.new{|x| x.logged_in? }
Run Code Online (Sandbox Code Playgroud)
该过程在过滤器之前调用。一个caches_action就像一个before_filter。该过滤器检查是否已经有关于该操作的缓存。除非,缓存已生成。
使用:if过滤器时,仅当调用 if 时才调用过滤器。所以过程是调用的。如果您不使用 Proc,则:if仅在服务器启动时读取文件期间解释该值。
| 归档时间: |
|
| 查看次数: |
1459 次 |
| 最近记录: |