Ruby 模块既是命名空间又是 mixin



在我目前正在开发的Rails应用程序中,我有很多"请求"模型。我们正在使用很多 Web 服务,我们对这些服务有很多不同的请求,每个服务都有自己的逻辑(主要是验证)。因此,它们都作为命名空间分组在一个模块中:

module Request
end

所以现在每个请求都是这样的:

class Request::SendSomeData
end

目前为止,一切都好。。。问题是,我们将有很多这样的请求,这些请求将共享一些共同的逻辑。很容易包含模块

class Request::SendSomeData
  include Request
end

。(所以它将同时充当命名空间和 mixin),但我想知道是否有办法在没有包含的情况下制作它(因为它将是某种代码重复)。

Ruby 有没有办法将一些实例方法放入模块命名空间中的所有类,而无需显式包含模块?

换句话说,我可以有这样的东西吗:

module Request
  def someMethod
  end
end

class Request::SendSomeData
end

并能够使用

Request::SendSomeData.new.someMethod

同时?

如果没有一些邪恶的黑客,你所要求的就无法完成。

你要么有太多的类,要么专注于一个太不重要的问题。 每个类只有一行代码。

另一种方法是创建一个基模型类,正如我之前在另一个问题中所描述的那样,但这需要派生类来调用set_table_name,因此它不会为您节省任何类型。

最新更新