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中是有效的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |