3

我最近将我的应用程序升级到 rails 4.0 和 ruby​​ 2.0 我无法理解为什么我的method_missing定义不起作用。我很确定我没有做任何与以前不同的事情。

belongs_to具体来说,我正在尝试创建一个方法,让 ActiveRecord 对象通过多态关系响应对它的对象的调用。

这是我的课程:

歌曲.rb

class Song < ActiveRecord::Base
    has_many :events, :as => :eventable
end

事件.rb

class Event < ActiveRecord::Base

    belongs_to :eventable, :polymorphic => true

    def method_missing(meth, *args, &block)
       if meth.to_s ==  self.eventable_type
          self.eventable
       else
          super
       end
    end

end

我希望能够event.song在 eventable_type 的 event == 'Song' 时调用问题出在 上self.eventable_type,这会触发堆栈溢出。

我在这里想念什么?

4

1 回答 1

1

似乎在触发eventable_type时该方法尚未定义method_missing(Rails 中的某些方法在method_missing您第一次调用它们时动态定义)。

我会尝试不同的方法来获得你想要的价值;也许self.attributes["eventable_type"]会起作用?

于 2013-04-18T16:36:56.353 回答