如果实例是通过ActiveRecord关联定义的,则自定义method_missing

我有可能处于各种状态的提交,并编写了一个method_missing覆盖,允许我通过调用来检查它们的状态
submission.draft?
submission.published?
这非常有效。 我也因各种原因可能不那么出色,有一个名为
Packlet
的模型属于会议,属于一个提交。但是,我很惊讶地发现了这一点
packlet.submission.draft?
返回一个
NoMethodError
。另一方面,如果我将
#draft?
方法硬编码为
Submission
,则上述方法调用有效。 即使通过ActiveRecord关联定义实例,如何识别我的method_missing方法?     
已邀请:
你添加了草稿吗?你的respond_to的方法?该对象的方法?我的猜测是那里可能会出现问题。键入时会发生什么: submission.respond_to?(:草案?) 要解决这个问题,实际上写一个respond_to?像这样的方法: def respond_to?(方法,include_priv = false)#:nodoc:   case method.to_sym   什么时候:草案?,:发表?     真正   其他     super(方法,include_priv)   结束 结束 我的建议是不使用method_missing来实现它,所以通过这样做一些元编程: 课程提交   [:draft,:published] .each do | status |     define_method“#{status}?”做       status ==“#{status}?”     结束   结束 结束     

要回复问题请先登录注册