2012-07-05 32 views
12

Tôi làm cách nào để có được tất cả người dùng có vai trò cụ thể khi sử dụng tính năng rolify? Tôi đã thử những điều sau đây nhưng nó đã không giúp đỡ:Tìm tất cả người dùng có vai trò cụ thể bằng cách sử dụng rolify

User.with_role :admin 

tôi nhận được lỗi sau:

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

không thể tìm thấy bất cứ cách nào để làm điều này.

+0

Bạn có thể thực hiện các hoạt động khác sử dụng rolify. – Bijendra

+0

@GhostRider Các hoạt động khác như quảng cáo thêm vai trò cho người dùng hoạt động bình thường. – RomanKapitonov

+0

chỉ cần kiểm tra ans của tôi dưới đây .. nó nên sửa vấn đề – Bijendra

Trả lời

23

Bạn có thể sử dụng phương thức with_role với lớp Người dùng để tìm tất cả người dùng có vai trò trong phiên bản 3.1.0.

User.with_role :admin 
+0

với "where" @courriers = User.where.not (vĩ độ: nil, kinh độ: nil) .with_role: Courrier –

8

Tôi muốn hỏi vai trò cho nó là người dùng

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

phương pháp with_role là dành cho một trường hợp người dùng cụ thể, không phải ở lớp cấp cho tất cả người dùng. Nếu bạn muốn thực hiện mà bạn sẽ phải làm một cái gì đó như thế này:

#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

Các bạn đã đề cập resourcify trong các mô hình để đưa vai trò trên

class User < ActiveRecord::Base 
    resourcify 
end 

Với điều này bạn có thể sử dụng with_role và find_roles các phương thức lớp.

+0

Cố gắng để làm điều đó như thế này cho những điều sau đây: 'Tải người dùng (0.3ms) SELECT' người dùng'. * TỪ 'người dùng' INNER JOIN" vai trò "ON" vai trò "." resource_type "= 'Người dùng' WHERE (vai trò.name = 'người dùng' VÀ vai trò.resource_type = 'Người dùng') => # ' – RomanKapitonov

+0

Đây là một vấn đề đã được khắc phục, chỉ cần kiểm tra https://github.com/EppO/rolify/commit/da1ec59acda83b9114aeb410c99b1ce6e0866648 – Bijendra

+0

@innocent_rifle này cũng kiểm tra https://github.com/EppO/rolify/issues/65 – Bijendra

0

nếu bạn cần một aditional "ở đâu"

@courriers = User.where.not(latitude: nil, longitude:nil).with_role :Courrier 
Các vấn đề liên quan