gpt4 book ai didi

ruby-on-rails - 如果第一个条件为 nil - ruby​​,则将变量分配给备份

转载 作者:太空宇宙 更新时间:2023-11-03 17:44:39 26 4
gpt4 key购买 nike

我正在尝试为变量设置一个值。但在某些情况下,此值将不存在。在场景中我想将它设置为我构建的空类。这是我正在使用的:

coupon = rsvp.purchases.map(&:coupon) || NullCoupon.new

我想用这句话说 - if rsvp.purchases.coupons is nil assign coupon to NullCoupon.new .我显然做错了什么,但我怎样才能做到这一点?

错误

ActionView::Template::Error (undefined method "coupon" for #<Purchase::ActiveRecord_Associations_CollectionProxy:0x007fadb410a478>

最佳答案

编辑:

我现在从错误中看出问题不在于您的 || 运算符,而在于您的 rsvp.purchases.map(&:coupon) 方法链接.它没有找到其中一项购买的优惠券

您可以通过确保购买总是有经过验证的优惠券来解决这个问题,或者您可以使用 Rails 中的 .try 方法。

Try method in Rails

原创

在 Ruby 中,nilfalse 是唯一不真实的东西。所以,优惠券将等于 rsvp.purchases.map(&:coupon) 除非 rsvp.purchases.map(&:coupon) 等于 nilfalse

您能否更具体地举例说明您收到的错误?

示例如下:

irb(main):019:0> coupon = nil || 1
=> 1
irb(main):020:0> coupon = "" || 1
=> ""
irb(main):021:0> coupon = false || 1
=> 1
irb(main):022:0> coupon = 4 || 1
=> 4
irb(main):023:0> coupon = OpenStruct.new || 1
=> #<OpenStruct>
irb(main):024:0> coupon = false || OpenStruct.new
=> #<OpenStruct>
irb(main):025:0> coupon = nil || OpenStruct.new
=> #<OpenStruct>

关于ruby-on-rails - 如果第一个条件为 nil - ruby​​,则将变量分配给备份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42542926/

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