2011-06-21 40 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') 
相关问题