gpt4 book ai didi

ruby-on-rails - Ruby 中的 Proc.new : when do I need to use it?

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:06 25 4
gpt4 key购买 nike

date_validator在其示例中有评论:

Using Proc.new prevents production cache issues

这是否意味着,在我的代码中的任何地方,我都使用与当前时间相关的方法(Time.now、1.day.since(Time.zone.now) 等),我应该用 Proc.new { }?

我不完全理解这一点,因为更换了

time_now = Time.now.utc

time_now = Proc.new { Time.now.utc }

对我来说没有意义(返回了新类型的对象)。

那么,问题是,我应该何时以及如何将 Proc.new 与时间相关的方法一起使用?这是否仍然适用于最新版本的 Ruby (1.92) 和 Rails (3.1)?

最佳答案

不,它只引用给定的例子:

validates :expiration_date,
:date => {:after => Proc.new { Time.now },
:before => Proc.new { Time.now + 1.year } }

如果你写成

validates :expiration_date,
:date => {:after => Time.now,
:before => Time.now + 1.year }

Time.now 将在类被解析时被解释,并且将根据该值进行验证。

在该验证中使用 Proc.new 意味着将在实际运行验证时评估 Time.new - 而不是在最初被解释时。

关于ruby-on-rails - Ruby 中的 Proc.new : when do I need to use it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6403339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com