2012-07-05 15 views
12

¿Cómo puedo obtener todos los usuarios con rol específico al usar rolify? He intentado lo siguiente, pero no sirvió de nada:Buscar todos los usuarios con rol específico usando rolify

User.with_role :admin 

me sale el siguiente error:

NoMethodError: undefined method `with_role' for #<Class:0x0000000743f9c0> 

No se pudo encontrar ninguna manera de hacer esto.

+0

¿Es capaz de realizar otras operaciones usando rolify. – Bijendra

+0

@GhostRider Otras operaciones como anuncios que agregan un rol a un usuario funcionan correctamente. – RomanKapitonov

+0

simplemente compruebe mi ans a continuación ... debería solucionar el problema – Bijendra

Respuesta

23

Puede utilizar el método with_role con una clase de Usuario para buscar a todos los usuarios que tengan un rol en la versión 3.1.0.

User.with_role :admin 
+0

con "donde" @courriers = User.where.not (latitud: nil, longitud: nil) .with_role: Courrier –

8

me gustaría pedir el papel de sus usuarios

admins = Role.find_by_name('admin').users 

el método with_role es para una instancia de usuario particular, no a nivel de clase para todos los usuarios. Si se desea implementar que tendría que hacer algo como esto:

#not 100% on this code, haven't tested it, but you get the idea. 
User < ActiveRecord::Base 
    def self.with_role(role) 
    my_role = Role.find_by_name(role) 
    where(:role => my_role) 
    end 
end 
1

Tiene usted ha mencionado resourcify en los modelos con el fin de poner los papeles en

class User < ActiveRecord::Base 
    resourcify 
end 

Con ello se puede utilizar with_role y métodos de clase find_roles.

+0

Intentar hacerlo de esta manera da lo siguiente: 'Carga de usuario (0.3ms) SELECCIONAR' usuarios'. * FROM 'usuarios' INNER JOIN" roles "ON" roles "." resource_type "= 'Usuario' WHERE (roles.name = 'usuario' Y roles.resource_type = 'Usuario') => # ' – RomanKapitonov

+0

Esto fue un problema que se solucionó, simplemente revise esto https://github.com/EppO/rolify/commit/da1ec59acda83b9114aeb410c99b1ce6e0866648 – Bijendra

+0

@innocent_rifle también verifique esto https://github.com/EppO/rolify/issues/65 – Bijendra

0

si necesita una adicional "donde"

@courriers = User.where.not(latitude: nil, longitude:nil).with_role :Courrier 
Cuestiones relacionadas