Пользовательский фильтр 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