2012-09-03 27 views
7

Estoy trabajando en una aplicación ActiveAdmin para una aplicación de producción grande. Actualmente estoy tratando de usar el mismo modelo para dos "entidades" activeadmin.Utilice el mismo modelo en dos clases de administrador activo

Por lo tanto, decir que tengo

class Person < ActiveRecord::Base 

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

end 

¿Puedo hacer algo como

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 

(estoy haciendo hasta la sintaxis un poco aquí para explicar lo que quiero hacer.)

Los dos tipos de personas aparecerían como elementos de menú y diferentes interfaces CRUD como se define en el bloque ActiveAdmin.register. Simplemente tendrían el mismo modelo subyacente.

+0

¿Has probado tu solución? – Fivell

+0

¿Qué ocurre si ejecuta su código? – monteirobrena

+0

Uso: como opción de la siguiente manera: ActiveAdmin.register Person,: as => "Ordinary People" Esto funciona para mí localmente, pero a veces de forma remota tanto las declaraciones entran en conflicto como las rutas redirigen al controlador incorrecto. No he podido rastrear en qué parte del proceso de inicialización está ocurriendo. – polmiro

Respuesta

4

Activo Código modelo de administración:

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 

Ahora en rutas:

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

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

Pruebe con los cambios anteriores. Espero que esto solucione tus problemas. Gracias.

+0

Hola @all, esto está funcionando al 100%, gracias –

+0

Me alegra saber, que ayudó:) – Swati

Cuestiones relacionadas