0

Ruby1.9.2とRubyonRails3.2.2を使用しています。私は次のステートメントを持っています:

class A < ActiveRecord::Base
  acts_as_something :arg1A, :arg2A, :argNA
end

class B < A
  acts_as_something :arg1B, :arg2B, :argNB
end

B < A( )を継承するacts_as_somethingと、で記述されたメソッドは、で記述されたメソッドによってオーバーライドされAないようです。クラスのメソッドに関連する引数を調べると、それらはまだ、、(、、ではなく)を参照します。acts_as_somethingBacts_as_somethingB:arg1A:arg2A:argNA:arg1B:arg2B:argNB

何が起こったのでしょうか?メソッドを適切にオーバーライドするacts_as_something方法は?

4

1 に答える 1

0

行はメソッド定義ではなく、acts_as_something :arg1A, :arg2A, :argNAクラスのスコープ内でのクラス メソッドの呼び出しです。したがって、それらをオーバーライドすることはできません。

ただし、「acts_as」メソッドの実装によっては、サブクラスでの効果をオーバーライドできます。しかし、これは問題の「acts_as」メソッドが何をするかによって完全に異なります...

于 2012-10-25T15:10:46.343 に答える