2012-07-05 9 views
12

Jak mogę uzyskać wszystkich użytkowników o określonej roli podczas korzystania z roli? Próbowałem następujących, ale to nie pomogło:Znajdź wszystkich użytkowników o określonej roli za pomocą rolify

User.with_role :admin 

pojawia się następujący błąd:

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

nie można znaleźć żadnych sposób to zrobić.

+0

Czy jesteś w stanie wykonywać inne operacje za pomocą rolify. – Bijendra

+0

@GhostRider Inne operacje, takie jak dodanie roli do użytkownika, działają poprawnie. – RomanKapitonov

+0

wystarczy sprawdzić mój ans poniżej .. powinien naprawić problem – Bijendra

Odpowiedz

23

Możesz użyć metody with_role z klasą User, aby znaleźć wszystkich użytkowników, którzy mają rolę w wersji 3.1.0.

User.with_role :admin 
+0

z "where" @courriers = User.where.not (szerokość geograficzna: zero, długość geograficzna: zero) .with_role: Courrier –

8

bym zapytać rolę dla jego użytkowników

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

metoda with_role jest dla konkretnej instancji użytkownika, a nie na poziomie klasy dla wszystkich użytkowników. Jeśli chcesz wdrożyć że trzeba by zrobić coś takiego:

#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

Czy wymienione resourcify w modelach, w celu stworzenia role na

class User < ActiveRecord::Base 
    resourcify 
end 

Z tego można użyć with_role i Metody klasy find_roles.

+0

Próba zrobienia tego w ten sposób daje: 'User Load (0.3ms) SELECT' users'. * FROM 'users' INNER JOIN" role "ON" role "." resource_type "= 'Użytkownik' WHERE (roles.name = 'user' AND roles.resource_type = 'User') => # ' – RomanKapitonov

+0

To był problem, który został naprawiony, po prostu sprawdź ten https://github.com/EppO/rolify/commit/da1ec59acda83b9114aeb410c99b1ce6e0866648 – Bijendra

+0

@innocent_rifle również sprawdzić to https://github.com/EppO/rolify/issues/65 – Bijendra

0

Jeśli potrzebujesz aditional "gdzie"

@courriers = User.where.not(latitude: nil, longitude:nil).with_role :Courrier 
Powiązane problemy