2010-09-10 38 views

回答

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 
+0

命名示波器更清潔,更優雅的方式.. +1 – sameera207 2010-09-10 15:01:55

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 }

真的取決於你想要達到的目的。 (2.)將與您的IS NOT NULL查詢等效(根據結果內容),(1.)將僅返回some_reference_id不爲空且AND指向有效some_references記錄的記錄。

+1

全表掃描。 – 2010-09-10 12:06:42

相關問題