如何从数据库中选择*,其中列!= rails中的值

时间:2011-06-21 18:52:14

标签: ruby-on-rails

现在我正在执行以下查询以在我正在处理的简单项目管理应用程序中显示所有任务。

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

这很好并且效果很好虽然我有一个私有列,如果任务是私有的,则设置为1。如何选择数据库中private不= = 1的所有任务?

2 个答案:

答案 0 :(得分: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 :(得分:1)

如果你使用Rails 3,松饼的解决方案是最好的。如果你还在Rails 2上,你需要使用条件:

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

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