2013-12-17 7 views
5

Ich habe die Ressource bestellen. In meinem Admin-Panel (activeadmin) brauche ich einen booleschen Filter, um alle Aufträge zu erhalten, bei denen der Benutzer eine bestimmte Rolle hat.Active Admin Rails4 benutzerdefinierten Filter mit Ransack

In der Order-Klasse habe ich einen Rahmen wie folgt aus:

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

Im aktiven Admin order.rb habe ich das Follow-Filter hinzufügen:

filter :client_only, as: :check_boxes 

Mit Schienen 3 (Metasuche) Ich kann hinzufügen

, um den Filter zu bekommen, aber mit Schienen 4 und Ransack weiß ich nicht, wie man das macht.

Ohne die search_method der Reihenfolge Modell Zugabe erhalte ich die Fehler

undefined method `client_only_in' for Ransack::Search 

wenn ich Index Admin-Befehle Seite.

Irgendwelche Hilfe?

Antwort

3

ich das nicht von einer Art und Weise kennen zu tun genau, aber man kann immer ein Auswahlfeld Rolle zu filtern hat basierend auf Benutzer:

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

UPDATE: Ach, wenn ein Auftrag belongs_to einen Benutzer als es sollte :user_role statt :users_role sein

+0

Ich konnte diese Arbeit in Schienen 4 nicht bekommen. Hier ist eine Lösung, die ich fand, die funktionierte zwar: http://cavewall.jaguardesignstudio.com/2014/05/01/activeadmin-filters -mit-ransack / – smcdrc