首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么模型object.save触发missing_method (rails 2.2)

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

Stack Overflow用户
提问于 2012-04-04 16:13:40
回答 1查看 100关注 0票数 0

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

这些模型具有多态关联。Product模型包含了自行车和汽车的共同之处:比如价格、颜色等。

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

代码语言:javascript
复制
def method_missing(meth, *args, &blk)
    product.send(meth, *args, &blk)
rescue NoMethodError
    super
end

现在我能够做到这一点

代码语言:javascript
复制
>> Car.last.price
=> 1000

但问题是,汽车模型的保存方法已经停止工作。我不知道为什么当我做Car.last.save的时候它会变成method_missing。它会引发此异常

代码语言:javascript
复制
NoMethodError: undefined method `<=>' for #<Car:0x7fcdd39ef2c0>
EN

回答 1

Stack Overflow用户

发布于 2012-04-04 17:14:46

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

代码语言:javascript
复制
  def respond_to?(method, include_private = false)
    super || product.respond_to?(method, include_private)
  end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10007268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档