Techioz Blog

Active Admin にカスタム フィルターを追加するにはどうすればよいですか?

概要

Active Admin を使用すると、次のようにインデックス ページに表示されるフィルターを定義できます。

ActiveAdmin.register Promo do

  filter :name
  filter :address
  filter :city
  filter :state
  filter :zip

end

上記のすべてのフィールドを 1 つに結合して、名前または完全な住所に検索文字列を含むプロモーションを検索できるようにしたいと考えています。私のモデルには、使用できる名前付きスコープがすでにあります。

class Promo < ActiveRecord::Base
  scope :by_name_or_full_address, lambda { |q| where('name LIKE :q OR address LIKE :q OR city LIKE :q OR state LIKE :q OR zip LIKE :q', :q => "%#{q}%") }
end

解決策

アクティブな管理者はメタ検索を使用します。たとえば、次のようにすることができます。

filter :"subscription_billing_plan_name" , :as => :select, :collection => BillingPlan.all.map(&:name)