2013-12-17 27 views
5

Ho la risorsa Ordine. Nel mio pannello di amministrazione (activeadmin) ho bisogno di un filtro booleano per ottenere tutti gli ordini in cui l'utente ha un ruolo specifico.Active Admin Rails4 filtro personalizzato con Ransack

Nella classe Order ho un ambito come questo:

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

In order.rb di amministrazione attiva ho aggiungere il filtro segue:

filter :client_only, as: :check_boxes 

Con rotaie 3 (metamotore) Posso aggiungere

search_method :client_only_in, type: :boolean 

per ottenere il filtro, ma con binari 4 e Ransack non so come fare questo.

senza aggiungere il search_method al modello ordine ottengo l'errore

undefined method `client_only_in' for Ransack::Search 

quando visito pagina indice degli ordini di amministrazione.

Qualsiasi aiuto?

risposta

3

Non so di un modo per fare esattamente questo, ma si può sempre avere un campo di selezione per filtrare in base ai ruoli utente:

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

UPDATE: Ah, se un Ordine belongs_to un utente di dovrebbe essere :user_role invece di :users_role

+0

Non ho potuto ottenere questo lavoro in Rails 4. Ecco una soluzione che ho trovato che funzionava però: http://cavewall.jaguardesignstudio.com/2014/05/01/activeadmin-filters -con-Ransack / – smcdrc

Problemi correlati