加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 不确定为什么会在这里使用Proc – 而不是简单

发布时间:2020-12-17 03:04:47 所属栏目:百科 来源:网络整理
导读:我理解proc的概念但有时我看到这样的代码(从rails指南获取验证 http://guides.rubyonrails.org/active_record_validations_callbacks.html#using-if-and-unless-with-a-proc): class Order ActiveRecord::Base before_save :normalize_card_number,:if = Pr
我理解proc的概念但有时我看到这样的代码(从rails指南获取验证 http://guides.rubyonrails.org/active_record_validations_callbacks.html#using-if-and-unless-with-a-proc):

class Order < ActiveRecord::Base
  before_save :normalize_card_number,:if => Proc.new { |order| order.paid_with_card? }
end

看来这可以更简单地写成:

class Order < ActiveRecord::Base
  before_save :normalize_card_number,:if => :paid_with_card? 
end

我在这里没有了解使用Proc的优势?

thx提前

解决方法

在简单的情况下,它们是等价的,但是procs允许更多的多功能性,而不需要在检查时仅仅为验证定义方法.

想象一下:

before_save :nuke,:if => Proc.new { |model| !model.nuked? && model.nukable? && model.region.nukable? }

您始终可以在实例方法中编写该检查并使用符号引用它,但是对于特定逻辑仅在以下情况中的情况:if,将其保留在proc中是有效的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读