是否有一个更好的/ rails类似的方式来查找所有东西IS NOT NULL查询?

时间:2010-09-10 10:41:54

标签: ruby-on-rails activerecord

这个IS NOT NULL查询是否有更好的/ rails类似的方式?

MyModel.find(:all, :conditions=>"some_reference_id IS NOT NULL")

2 个答案:

答案 0 :(得分:5)

与范围相似的Rails方式更多,因为它们现在是Rails 3的原生。在Rails 2中,您可以使用类似的named_scope。

class MyModel < ActiveRecord::Base
  named_scope :referenced, :conditions => "some_reference_id IS NOT NULL"
end

#Then you can do this
MyModel.referenced

在Rails 3中,它会是这样的。

class MyModel < ActiveRecord::Base
  scope :referenced, where "some_reference_id IS NOT NULL"
end

答案 1 :(得分:1)

假设MyModel belongs_to :some_reference,您也可以使用

  1. MyModel.all.find_all{ |e| e.some_reference }
  2. MyModel.all.find_all{ |e| e.some_reference_id }
  3. 真的取决于你想要实现的目标。 (2.)对于你的IS NOT NULL查询是等价的(就结果内容而言),(1。)只会返回some_reference_id不为空且指向有效some_references记录的记录。