есть ли более приятный / подобный рельсу способ найти все, где что-то НЕ НУЛЕВОЙ запрос? - PullRequest
1 голос
/ 10 сентября 2010

есть ли более приятный / подобный рельсу способ для этого запроса NOT NOT NULL?

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

Ответы [ 2 ]

5 голосов
/ 10 сентября 2010

Более 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 голос
/ 10 сентября 2010

Предполагая MyModel belongs_to :some_reference, вы также можете использовать

  1. MyModel.all.find_all{ |e| e.some_reference } или
  2. MyModel.all.find_all{ |e| e.some_reference_id }

действительно зависит от того, что вы пытаетесьдостигать.(2.) будет эквивалентен (с точки зрения содержимого результата) вашему запросу IS NOT NULL, (1.) будет возвращать только записи, чей some_reference_id не равен NULL, и указывает на действительную запись some_references.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...