为什么模型object.save触发missing_method(rails 2.2)

时间:2012-04-04 08:13:40

标签: ruby-on-rails ruby

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

这些模型具有多态关联。产品型号包含自行车和汽车的常见物品:价格,颜色等。

现在我想通过汽车或自行车的对象直接访问产品的方法,如bike_obj.price

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

现在我能够实现这个目标

>> Car.last.price
=> 1000
但是问题是SA模式的汽车模型已经停止工作了。当我做Car.last.save时,我不知道为什么它会在method_missing中出现。它引发了这个异常

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

1 个答案:

答案 0 :(得分:1)

每当您覆盖respond_to?

时,您都应该覆盖method_missing
  def respond_to?(method, include_private = false)
    super || product.respond_to?(method, include_private)
  end