0

我有三个模型。1- 产品 2- 自行车 3- 汽车

这些模型具有多态关联。Product 模型包含 Bike 和 Car 的共同点:价格、颜色等。

现在我想直接通过像 Bike_obj.price 这样的 Car 或 Bike 的对象来访问 Products 的方法

def method_missing(meth, *args, &blk)
    product.send(meth, *args, &blk)
rescue NoMethodError
    super
end

现在我能够做到这一点

>> Car.last.price
=> 1000

但问题是 Car 模型的 SAVE 方法已停止工作。当我执行 Car.last.save 时,我不知道为什么它会出现在 method_missing 中。它引发了这个异常

NoMethodError: undefined method `<=>' for #<Car:0x7fcdd39ef2c0>
4

1 回答 1

1

respond_to?每当您覆盖时,您都应该覆盖method_missing

  def respond_to?(method, include_private = false)
    super || product.respond_to?(method, include_private)
  end
于 2012-04-04T09:14:45.710 回答