2012-11-22 71 views
2

我有一個應用程序,用戶在註冊後被管理員批准。我需要一些幫助來篩選出成員列表中的管理員。從Rails成員中過濾出管理員

這是我的索引方法:

def index 
    if params[:is_approved].to_i == 0 
    @users = User.find_all_by_is_approved(0) #returns all unapproved users 
    else 
    @users = User.find_all_by_is_approved(1) #here I wanna filter out the admins 
    end 
end 

我試圖添加&& User.find_all_by_is_admin(0)但後來我得到的所有不屬於管理員,即未經批准的用戶的用戶。

管理員是用戶,但有一列is_admin設置爲true,我不想顯示它們。

回答

3

如果你想誰批准的用戶列表中,但不是管理員:

User.where(:is_approved => 1, :is_admin => 0) 

,或者如果你想將它寫在樣式你使用,你可以這樣做:

User.find_all_by_is_approved_and_is_admin(1, 0) 

之所以你試圖什麼不工作,是因爲&&是布爾運算符,所以如果你寫

User.find_all_by_is_approved(1) && User.find_all_by_is_admin(0) 
所以這個計算結果爲右手側路

這裏&&的兩側都被認爲真正即User.find_all_by_is_admin(0)

有在紅寶石陣列的&(單&符號)運算,使該交點2的陣列,即

User.find_all_by_is_approved(1) & User.find_all_by_is_admin(0) 

會是誰在兩個列表中的用戶列表,但是這是因爲它導致2個獨立的數據庫查詢做這件事的方式效率極低。

+0

感謝邁克,我很新的軌道和這有助於很多:D – Matti

+1

很酷,很高興它幫助。 'User.where ..'風格是Rails 3做查詢的方式。您可以在[本指南](http://guides.rubyonrails.org/active_record_querying.html)和[本屏幕錄像](http://railscasts.com/episodes/202-主動記錄查詢功能於軌道-3)。 – mikej