0

私のアプリケーションでは、オブジェクトのコレクションと別のオブジェクトでも同じメソッドを呼び出す必要があります。たとえば、被保険者のユーザーは多くの保険証券を持っており、その状態を下書きから承認済みに変更することができます。私のレポートでは、特定の日付の別のユーザーのすべての保険証券の状態に関する統計を取得する必要があります。しかし、チェックボックス「すべてのユーザーのポリシーを表示する」が設定されている場合、ユーザーのコレクション全体からデータを取得し、各ユーザーを繰り返し、特定の日付のポリシー状態情報を収集する必要があります。私の質問は - そのような場合のベストプラクティスは何ですか? そのようなメソッドをどこに置くべきですか、それらを1つに結合できますか?

4

1 に答える 1

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

于 2013-04-07T09:11:22.573 に答える