如何从继承的类重写“acts_as”方法?

时间:2012-10-25 13:33:28

标签: ruby-on-rails ruby inheritance methods override

我正在使用Ruby 1.9.2和Ruby on Rails 3.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_something中所述的方法覆盖{ {1}}:当我检查与B类的acts_as_something方法相关的参数时,仍会引用B:arg1A:arg2A(< em> not to :argNA:arg1B:arg2B)。

可能发生了什么?如何正确覆盖:argNB方法?

1 个答案:

答案 0 :(得分:0)

acts_as_something :arg1A, :arg2A, :argNA行不是方法定义,而是在类的范围内调用类方法。因此,您无法覆盖它们。

但是,取决于&#34; acts_as&#34;的实施情况。您可以覆盖它们在子类中的效果的方法。但这完全取决于&#34; acts_as&#34;有问题的方法确实......