0

私は3つのモデルを持っています。1-製品2-自転車3-車

これらのモデルには、ポリモーフィックな関連性があります。製品モデルには、価格、色など、自転車と車の一般的なものが含まれています。

今、私は、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 に答える