1

通話を録音するアプリがあります。各呼び出しには、複数のユニットを関連付けることができます。私のアプリの一部には、基本的に Call モデルでさまざまな基準のクエリを実行するレポート セクションがあります。私は、自分のやりたいことを実行するいくつかのスコープを作成し、それらをレポート検索機能の結果につなげる方法を見つけました。しかし、「ユニット」で検索する方法がわかりません。以下は、私のコードからの関連する抜粋です。

Call.rb

    has_many :call_units
    has_many :units, through: :call_units

        #Report search logic
          def self.report(search)
            search ||= { type: "all" }

            # Determine which scope to search by
            results = case search[:type]
                      when "open"
                        open_status
                      when "canceled"
                        cancel
                      when "closed"
                        closed
                      when "waitreturn"
                        waitreturn
                      when "wheelchair"
                        wheelchair
                      else
                        scoped
                      end

#Search results by unit name, this is what I need help with.  Scope or express otherwise?          
results = results. ??????

            results = results.by_service_level(search[:service_level]) if search[:service_level].present?
            results = results.from_facility(search[:transferred_from]) if search[:transferred_from].present?
            results = results.to_facility(search[:transferred_to]) if search[:transferred_to].present?

            # If searching with BOTH a start and end date
            if search[:start_date].present? && search[:end_date].present?
              results = results.search_between(Date.parse(search[:start_date]), Date.parse(search[:end_date]))

              # If search with any other date parameters (including none)
            else
              results = results.search_by_start_date(Date.parse(search[:start_date])) if search[:start_date].present?
              results = results.search_by_end_date(Date.parse(search[:end_date])) if search[:end_date].present?
            end

            results
          end

ユニットの関連付けが既にあるので、何らかの方法でユニットのスコープを作成する必要があるかどうか、または検索ロジックの結果変数で結果を何らかの方法で表現する必要があるかどうかはわかりません。

4

1 に答える 1