使用带有类和实例方法的模块

时间:2013-04-03 16:24:43

标签: ruby-on-rails-3 rails-models

在我的应用程序中,我需要在对象的集合和单独的对象上调用相同的方法。例如,投保用户有许多保险单,可以将其状态从草稿更改为接受等。对于我的报告,我需要获取有关特定日期的单独用户的所有策略状态的统计信息。但是,如果设置了“为所有用户显示策略”复选框,我需要从整个用户集中获取数据,迭代每个用户并收集特定日期的策略状态信息。我的问题是 - 这类案件的最佳做法是什么?我应该把这些方法放在哪里,我可以把它们组合成一个吗?

1 个答案:

答案 0 :(得分:0)

我通过将类和实例方法(具有相同名称)放在同一模块文件中找到了解决方案。请参阅以下示例:

require 'active_support/concern'    
module SharedMethods
  extend ActiveSupport::Concern

  module ClassMethods
    def get_policies(date)
      self.all.each do |entity|
        entity.get_policies(date)
      end
    end
  end

  #Instance methods
  def get_policies(date)
    self.find_policy #place required code here
  end
end

之后我需要在我的模型中包含这个模块,我可以将get_policies(date)作为类和实例方法调用。请点击此链接以获取更多信息http://alexanderwong.me/post/15697487692/rails-model-mixins-via-included-modules