新手问题 go_to_state :payment, if: ->(order) { order.payment_required? } 其中的 if: -> 是什么意思?

viciousstar · 2015年09月12日 · 最后由 viciousstar 回复于 2015年09月13日 · 1575 次阅读

如题,查了好久都没有找到。 这是 spree 源码中的一部分,参见 https://github.com/spree/spree/blob/master/core/app/models/spree/order.rb#L47

-> 是定义一个 lambda, 功能和 lambda{} 一致。 if: ->(order) { order.payment_required? } 是一个 hash 参数。具体这个参数有什么作用,可以在 https://github.com/spree/spree/blob/master/core/app/models/spree/order/checkout.rb#L128 查到

#1 楼 @fumesy 这里的 if 不是关键字,是一个 :if key 的意思?

#2 楼 @viciousstar 是的,只要带有 : 都是一个 Symbol

lam = -> { xxx }
go_to :payment, if: lam

😄 谢谢,这种东西真的不好查。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号