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