使用一些通用方法的 Ruby 模块 :where to put this method?

标签 ruby

给定一些 uploader 类,我在其中包含三个模块。

它们各有各的独特用途,这就是我将它们分为三个模块的原因。但是,事实证明,所有三个模块都需要一种方法。

因此,到目前为止,对我来说很明显,必须有比在这三个模块中的每一个中定义此方法更好的方法。我是否应该制作第四个模块并将此方法放入其中,并让这些原始的三个模块包含这个第四个模块?或者有更好的方法吗?

最佳答案

是的,听起来您应该有第四个模块。但听起来您可能实际上需要一个类层次结构而不是独立的平面模块。应用“是一个”测试 - 你能说一个 UploaderA 实例是一个 uploader 吗?如果是这样,你应该有

class Uploader
  include FourthModule  # with shared functionality for all uploaders
  # or just go ahead and put the shared functionality right in the Uploader class here.
end

class UploaderA < Uploader
end

关于使用一些通用方法的 Ruby 模块 :where to put this method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5942976/

相关文章:

ruby-on-rails - 从 Controller 参数中保存 Rails 模型?

ruby-on-rails - 如何测试 belongs_to、has_one 或 has_many 与 test::unit 的关联?

ruby-on-rails - 如何在 Ruby 中创建自定义排序方法

ruby-on-rails - 如何使用 Ruby Pry 跳出循环?

ruby-on-rails - 工具提示截断

ruby - 为什么 Chef 文件 search_file_replace 不起作用

ruby-on-rails - 原始字符串 REXML 解析中的非法字符 '&'

ruby - PayPal 自适应支付 - 如何获得账户 ID?

ruby-on-rails - 在 Ruby 2.0.0 上安装 Rubygems 失败 在 OSX Mavericks 上安装

ruby-on-rails - 使用 RSpec 的请求规范测试外部 API