【问题标题】:Explicitly inherit from a class in the base module显式继承基础模块中的类
【发布时间】:2009-12-15 07:17:09
【问题描述】:

我有一个继承自 User 类的类。

例如

类 MyClass

结束

在我的代码库中,我有一个类用户

类用户

结束

但是我也有一个插件,它在模块TheyModule::User 中提供了一个用户类。这是我的应用程序所绑定的插件,我目前无法删除它,但这是我更愿意这样做。

从控制台我可以访问 MyClass 并且正确确定了继承。但是,在运行应用程序时,我打算从哪个 User 类继承似乎有些混乱,因此继承失败。

有没有办法从我的 User 类显式继承并防止与 TheyModule::User 混淆

【问题讨论】:

    标签: ruby-on-rails inheritance


    【解决方案1】:

    如果您希望 MyClass 继承自 User 类,您可以将 User 类放在一个模块中,例如 MyModule。

    class MyClass < MyModule::User
    end
    

    【讨论】:

    • 无论如何我可以在类定义中引用默认模块,而不必明确地将其转移到新模块?此更改将影响的代码库非常脆弱,而且这种规模的更改并非易事。
    【解决方案2】:
    class MyUser < User
    end
    
    class MyClass < MyUser
    end
    

    这样 MyClass 将继承自您自己的 MyUser 类和 TheyModule::User。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      • 2023-03-21
      • 1970-01-01
      • 2018-02-25
      • 2011-04-24
      • 2021-12-15
      相关资源
      最近更新 更多