2011-06-21 42 views
2

現在我正在執行以下查詢以顯示我正在處理的簡單項目管理應用程序中的所有任務。如何從數據庫中選擇列!=在rails中的值

Task.find(:all, :order => 'updated_at DESC') 

這很好,而且效果很好,但是如果任務是私人的話,我有一個專用列設置爲1。如何選擇數據庫中私人不存在== 1的所有任務?

回答

5

ARel應該做的伎倆:

Task.where(:private => false).order("updated_at DESC") 

編輯:這是假設你的列是1或0。如果沒有,你可以使用LT/GT比較,這將是這個樣子:

Task.where(Task.arel_table[:private].gt(1)).order("updated_at DESC") 
+1

只要注意:這是Rails 3特定的解決方案。如果提問者使用Rails 2,他們將需要其他東西:) –

+0

如果下降到arel_table對你來說有點多,你可以執行Task.where(「tasks.private> 1」)。order(。 ..)' – nzifnab

+0

謝謝!這固定了它。 – Jon

1

muffinista的解決方案是最好的,如果你使用的Rails 3.如果你仍然在軌道2,您需要使用條件:

Task.find(:all, :conditions => {:private => false}, :order => 'updated_at DESC') 

Task.find(:all, :conditions => "private != 1", :order => 'updated_at DESC') 
相關問題