0

製品パンフレットを格納するテーブルを作成しました。ユーザーが 3 つのドロップダウン メニュー (製品タイプ、キャリア、コンセプト) に基づいてテーブルを検索できるようにしたいと考えています。メニューを作成しましたが、コントローラーは現在パラメーターを正しく通過しています。ユーザーが 3 つの条件すべてで検索すると、検索は正しく表示されます。ただし、ユーザーが 1 つまたは 2 つの検索オプションのみを選択した場合、結果は常に何もありません。なぜこれが起こっているのか理解しています (モデルは 3 つの条件すべてで検索しようとしており、1 つが見つからない場合は、そのフィールドで nil を検索するだけです) が、正しい解決策であると確信しています。助けてください!私のモデルは以下です...ありがとう

def self.search (search_product_type, search_carrier, search_concept)

  if search_product_type.blank? && search_carrier.blank? && search_concept.blank?
    scoped
  else
    Ad.where(carrier_id: search_carrier)
      .where(product_type_id: search_product_type)
      .where(concept: search_concept)
  end
end
4

1 に答える 1

1

@Deefour がコメントで述べたように、gem を使用する必要があります。ただし、次のようなものを作成することもできます。

def self.search (search_product_type, search_carrier, search_concept)

  if search_product_type.blank? && search_carrier.blank? && search_concept.blank?
    scoped
  else
    tmp = {}

    if search_carrier.present?
       tmp[:carrier_id] = search_carrier
    end

    if search_product_type.present?
       tmp[:product_type_id] = search_product_type
    end

    if search_carrier.present?
       tmp[:concept] = search_concept
    end

    Ad.where(tmp)
  end
end
于 2012-12-17T22:06:52.630 に答える