2012-09-03 6 views
7

Ich arbeite an einer ActiveAdmin-App für eine große Produktionsanwendung. Ich versuche derzeit, das gleiche Modell für zwei ActiveAdmin "Entitäten" zu verwenden.Verwenden Sie dasselbe Modell in zwei aktiven Admin-Klassen

Also, sage ich

class Person < ActiveRecord::Base 

    scope :special, where(:is_special => true) 
    scope :ordinary, where(:is_special => false) 

end 

haben Kann ich etwas tun, wie

ActiveAdmin.register Person, :name => "Special People" do 

    # columns, filters for special people 

    controller do 
    def scoped_collection 
     Person.special 
    end 
    end 

end 

ActiveAdmin.register Person, :name => "Ordinary People" do 

    # columns, filters for ordinary people 

    controller do 
    def scoped_collection 
     Person.ordinary 
    end 
    end 

end 

(Ich bin die Syntax ein bisschen hier machen bis zu erklären, was ich tun möchte.)

Die zwei Arten von Personen würden als Menüeinträge und verschiedene CRUD-Schnittstellen erscheinen, wie im Block ActiveAdmin.register definiert. Sie würden nur das gleiche zugrundeliegende Modell haben.

+0

Haben Sie Ihre Lösung versucht? – Fivell

+0

Was passiert, wenn Sie Ihren Code ausführen? – monteirobrena

+0

Ich benutze: als Option wie folgt: ActiveAdmin.Register Person,: as => "Gewöhnliche Menschen" Dies funktioniert für mich lokal, aber manchmal remote beide Deklarationen kollidieren und die Routen an den falschen Controller umleiten. Ich konnte jedoch nicht herausfinden, wo im Initialisierungsprozess das passiert ist. – polmiro

Antwort

4

Aktiv Admin Modell-Code:

ActiveAdmin.register Person, as: "Special People" do 
     scope :Special, default: true do |person| 
     person = Person.special 
     end 

     controller do 
     def scoped_collection 
      Person.special 
     end 
     end 
    end 

    ActiveAdmin.register Person, as: "Ordinary People" do 
     scope :Ordinary, default: true do |person| 
     person = Person.ordinary 
     end 

     controller do 
     def scoped_collection 
      Person.ordinary 
     end 
     end 
    end 

Jetzt in Routen:

match '/admin/special_people/scoped_collection/:id' => 'admin/special_people#scoped_collection' 

match '/admin/ordinary_people/scoped_collection/:id' => 'admin/ordinary_people#scoped_collection' 

mit über Änderungen Versuchen. Hoffe das würde deine Probleme lösen. Vielen Dank.

+0

Hallo @all, das funktioniert 100%, Dank –

+0

froh zu wissen, dass es geholfen:) – Swati

Verwandte Themen