Как использовать поля HABTM в разделе Active Admin filter?

#ruby-on-rails-3 #has-and-belongs-to-many #activeadmin

#ruby-on-rails-3 #имеет и принадлежит многим #activeadmin

Вопрос:

Я использую Active Admin 0.3.2, и моя схема базы данных включает в себя несколько отношений has_and_belongs_to_many. Я могу создавать и отображать записи просто отлично, но попытка включить их в раздел фильтра приводит к остановке работы.

modelspin.rb:

 class Pin < ActiveRecord::Base
    has_and_belongs_to_many :pin_types, :join_table => :pin_types_pins
end
  

modelspin_type.rb

 class PinType < ActiveRecord::Base
    has_and_belongs_to_many :pins, :join_table => :pin_types_pins
end
  

admin pins.rb

 ActiveAdmin.register Pin do
    filter :pin_types
    ...other filters
end
  

В результате появляются другие фильтры, но для типов выводов вообще нет раздела.

Если adminpins.rb это вместо:

 ActiveAdmin.register Pin do
    filter :pin_types, :as => :check_boxes
    ...other filters
end
  

Я получаю следующее:

 undefined method `pin_type_ids_in' for #<MetaSearch::Searches::Pin:0xcd2c108>
  

Что я хотел бы сделать, так это разрешить пользователю выбирать один или несколько типов выводов из набора возможных вариантов и фильтровать в зависимости от того, применяется ли какой-либо из выбранных параметров.

Возможно ли это?

Комментарии:

1. Я сам нашел решение на GitHub . Для справки: filter :pin_types_id, :as => :check_boxes, :collection => proc {PinType.all}

2. если мы хотим создать Pintype из pin, то что нам нужно сделать?

Ответ №1:

используйте фильтр следующим образом: filter:model_attribute , поэтому, если вы находитесь на User_events и хотите выполнить поиск по имени пользователя, вы бы выполнили этот фильтр: user_fullName

Комментарии:

1. Можете ли вы подробнее рассказать об этом? Я не уверен, что вы имеете в виду.

Ответ №2:

Обратите внимание, что ответ ccarlson работает, но только с :check_boxes .

Это прискорбно, потому что поведение meta_search по умолчанию (используемое для включения поиска по фильтру) не отфильтровывает дубликаты… и когда вы используете флажки, вы, вероятно, не хотите, чтобы результат отображался дважды, потому что он соответствует 2 выбранным параметрам.

При попытке использования я столкнулся с ошибкой undefined method as: :select , но мне пришлось стиснуть зубы на флажках.