我最近将我的应用程序升级到rails 4.0和ruby 2.0
我在理解为什么我的method_missing
定义不起作用时遇到了问题。我很确定我的做法与以往不同。
具体来说,我正在尝试创建一个方法,让ActiveRecord对象通过多态关系响应对它belongs_to
的对象的调用。
以下是我的课程:
song.rb
class Song < ActiveRecord::Base
has_many :events, :as => :eventable
end
event.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
我希望能够在eventable_type of event =='Song'时调用event.song
问题出在self.eventable_type
上,这会触发堆栈溢出。
我在这里缺少什么?
答案 0 :(得分:1)
似乎eventable_type
方法在method_missing
触发时尚未定义(Rails中的某些方法在第一次调用时通过method_missing
动态定义)。
我会尝试不同的方法来获得你想要的价值;也许self.attributes["eventable_type"]
会起作用吗?