要約
- modelのscopeで検索できた!
- ので、応用範囲が広い(これだけ覚えておけばfilterのカスタム全部いけそう)
- ActiveAdminのカスタムはなかなかググりづらい
- associatedなmodelのカラムを文字列で検索する
- 最新情報(2019/10/10時点)
- 基本的にこの記事方法でできる
- stringで検索するには
やり方
この記事の方法でできること確認しました(2019/10/10時点)
ありがとうございます!
具体的には
- 引数一つでmodelにscopeつくる
-
self.ransackable_scopes
の中でそのscopeを渡す -
admin/model_names
の中でfilter :scope_name, as: :string
元記事になかった注意点として、
-
as: :string
はactiveadminドキュメントで書いてある、filterに使いたいクラスを指定する。指定しないとfilter自体が出てこない。(多分scopeだから自動判定できないため) - activeadmin_addons gemを使ってる人は、
as: :search_select_filter
使うとエラーになる
なにがうれしいか
activeadminて独自の記法が多くて、ドキュメントされてないことが多いと思っているので、独自記法関係なくscope使ってそのまま検索できる方法がわかったのはうれしい
class Post < ApplicationRecord
has_many :authors, through: :...
scope :created_by_author_profile_name, -> (author_profile_name) {
# 検索ロジック
}
def self.ransackable_scopes(_auth_object = nil)
%i(created_by_author_profile_name)
end
end
ActiveAdmin.register Post do
filter :created_by_author_profile_name, as: :string
end