如何为 Rails 上 Ruby 中可选多态关系的调用提供虚拟值?

How to provide dummy values to a call to an optional polymorphic relationship in Ruby on Rails?

如果我有以下class

class Discount < ApplicationRecord
   belongs_to :coupon, polymorphic: true, optional: true

end

并且有一种情况,我想在留下优惠券 class 的同时创建折扣,我如何才能向客户 class 提供价值,这些客户 class 调用了像 [=15= 这样的行]

@discount.coupon.code

无需在调用前添加检查?我希望能够根据 Discount class.

中的参数指定 @discount.coupton.code 等调用返回的默认值

在 rails 中有没有简单的方法来做到这一点?

应该可以覆盖getter。像这样...

class Discount < ApplicationRecord
  belongs_to :coupon, polymorphic: true, optional: true

  def coupon
    unless some_condition
      self[:coupon]
    else
      OpenStruct.new(code: 'a_non_coupon_discount')
    end
  end
end