【问题标题】:How to override "acts_as" methods from inherited classes?如何从继承的类中覆盖“acts_as”方法?
【发布时间】:2012-10-15 16:58:42
【问题描述】:

我正在使用 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 &lt; A) 时,A 中所述的方法acts_as_something 似乎没有B 中所述的方法acts_as_something 覆盖:当我检查相关参数时到B 类的acts_as_something 方法,那些仍然引用:arg1A:arg2A:argNA不是:arg1B:arg2B:argNB) .

会发生什么?如何正确覆盖acts_as_something方法?

【问题讨论】:

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


    【解决方案1】:

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

    但是,根据“acts_as”方法的实现,您可以覆盖它们在子类中的效果。但这完全取决于所讨论的“acts_as”方法的作用......

    【讨论】:

    • 您可以将问题中出现的acts_as 方法视为ActAsList gem 提供的acts_as_list 方法。
    猜你喜欢
    • 2012-11-20
    • 2021-11-30
    • 2012-09-27
    • 1970-01-01
    • 2021-12-06
    • 2014-01-15
    • 2019-02-08
    • 2016-12-03
    • 1970-01-01
    相关资源
    最近更新 更多