Пользовательский фильтр Active Admin Rails4 с Ransack

У меня есть ресурс Order. В моей панели администратора (activeadmin) мне нужен логический фильтр, чтобы получить все заказы, в которых пользователь играет определенную роль.

В классе Order у меня есть такая область видимости:

class Order
  belongs_to :user
  scope :client_only_in, -> { joins(:user).where('users.role = ?', 'client') }
end

В активный админ order.rb я добавил следующий фильтр:

filter :client_only, as: :check_boxes

С рельсами 3 (метапоиск) могу добавить

search_method :client_only_in, type: :boolean

чтобы получить фильтр, но с рельсами 4 и Ransack я не знаю, как это сделать.

Без добавления search_method к модели заказа я получаю ошибку

undefined method `client_only_in' for Ransack::Search

когда я захожу на страницу с указаниями администратора.

Любая помощь?

1 ответ

Решение

Я не знаю, как именно это сделать, но у вас всегда может быть поле выбора для фильтрации на основе ролей пользователя:

filter :users_role, as: :select, multiple: true, collection: proc{ User.uniq.pluck :role }

ОБНОВЛЕНИЕ: Ах, если заказ belongs_to Пользователь, чем это должно быть :user_role вместо :users_role

Другие вопросы по тегам