0

我们有一组用完的报告/lib。这些已经变得如此庞大,以至于我们现在已经编写了许多方法,这些方法可以算作助手或其他与报告相关的“装饰器风格”方法。

这些附加方法存在于报告中,如下所示:

class report
  def get_latest_credential_updated_date
    credentials.map(&:updated_at).compact.max
  end

  def initialize 
    # set up stuff
  end
end
  1. 有没有办法加载模块,或者在报告库加载时将代码注入模型:

    class Loan < ActiveRecord::Base
      def get_latest_credential_updated_date
        credentials.map(&:updated_at).compact.max
      end
    end
    
  2. 是否有更好的模式来表示这种架构?

4

1 回答 1

1

也许您可以使用 class_eval 创建一个“注入助手”,例如:

def inject_to(class_name, &block)
  eval "#{class_name.name}.class_eval &block"
end

inject_to Loan do
 def get_latest_credential_updated_date
   credentials.map(&:updated_at).compact.max
 end
end
于 2012-11-05T19:17:40.683 回答