3

最近、アプリを rails 4.0 と ruby​​ 2.0 にアップグレードしましたが、method_missing定義が機能しない理由がわかりません。以前と何も変わっていないことは確かです。

belongs_to具体的には、ActiveRecord オブジェクトがポリモーフィックな関係を介してオブジェクトへの呼び出しに応答できるようにするメソッドを作成しようとしています。

ここに私のクラスがあります:

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

event.songイベントの eventable_type == '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 に答える