2012-09-03 14 views
7

Pracuję nad aplikacją ActiveAdmin dla dużej aplikacji produkcyjnej. Obecnie próbuję użyć tego samego modelu dla dwóch "podmiotów" aktywnych.Użyj tego samego modelu w dwóch aktywnych klasach administracyjnych

Tak, że mam

class Person < ActiveRecord::Base 

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

end 

Czy mogę zrobić coś takiego

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 

(Robię się składnię nieco tutaj, aby wyjaśnić, co chcę robić.)

Te dwa typy osób pojawią się jako elementy menu i różne interfejsy CRUD zdefiniowane w bloku ActiveAdmin.register. Mają po prostu ten sam podstawowy model.

+0

czy wypróbowałeś swoje rozwiązanie? – Fivell

+0

Co się stanie, jeśli wykonasz swój kod? – monteirobrena

+0

Używam: jako opcja: ActiveAdmin.register Osoba,: as => "zwykli ludzie" Działa to dla mnie lokalnie, ale czasami zdalnie, obie deklaracje kolidują, a trasy przekierowują do niewłaściwego kontrolera. Nie udało mi się wyśledzić, gdzie w procesie inicjalizacji dzieje się to jednak. – polmiro

Odpowiedz

4

aktywnego modelu Admin Kod:

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 

Teraz w trasach:

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

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

Spróbuj z powyższych zmian. Mam nadzieję, że to rozwiąże Twoje problemy. Dzięki.

+0

Hi @all, to działa w 100%, dzięki –

+0

Dobrze jest wiedzieć, że to pomogło:) – Swati

Powiązane problemy