从Rails中的子类创建子类

时间:2018-09-18 01:36:17

标签: ruby-on-rails

Rails应用程序名称:“ KayNein”

文件和文件夹:

  • app / kay_nein / kay_nein.rb(模块)app / kay_nein / handler.rb(类
  • KayNein内部包含核心方法)
  • app / kay_nein / sites / demo / demo.rb(Handler的子类)

KayNein模块:

Module KayNein
end

处理程序类:

Module KayNein
  class KayNein
    def initialize(browser)
      @browser = browser
    end
  end
end

演示班:

Module KayNein
  class Demo < Handler
  end
end

到目前为止,很好。

但是,我想创建一个子目录-app / kay_nein / sites / demo / jira /-并放入Demo的小型子类,该子类继承链上的所有方法。

我该怎么做?我尝试了不同的排列,但是总是收到以下错误消息:

<module:KayNein>': superclass mismatch for class Rdm (TypeError)

1 个答案:

答案 0 :(得分:1)

您多次指定KayNein::Rdm的超类。从您提供的信息来看,这在应用程序中是如何发生的并不明显。

要解决此问题,您需要找到Rdm类的所有定义,并确保每个超类与其他超类匹配。

这是导致您遇到相同错误的代码示例。请注意,多次指定了class Rdm。这是允许的,但前提是超类与初始超类匹配或省略超类。

> class Parent; end
>
> module KayNein
>   class Rdm; end            # Initial class definition is OK
>   class Rdm < Parent; end   # Raises error because `Parent` does not match the superclass from the previous line.
>   class Rdm; end            # This would be OK because it matches the original class definition.
> end

Traceback (most recent call last):
        3: from /Users/andyogzewalla/.asdf/installs/ruby/2.5.1/bin/irb:11:in `<main>'
        2: from (irb):4
        1: from (irb):6:in `<module:KayNein>'
TypeError (superclass mismatch for class Rdm)