2012-08-18 26 views
0

條款我是新來的Ruby和具備以下條件:凡在Model.all

students = Student.all(:order => "score DESC", 
      :limit => 5) 

不過,我想提出一個WHERE子句這個很好,但我得到的錯誤「未知鍵:其中」。我student表引用一個exam表(t.references :exam),其具有date場,所以我需要做的是這樣的:

students = Student.all(:where => "exam.date='01/01/2012'", 
         :order => "score DESC", 
         :limit => 5) 

如何使用where子句中的all方法是exam.date='01/01/2012'正確的嗎?

+2

閱讀[ROR指南](http://guides.rubyonrails.org/active_record_querying.html)。 – Dean 2012-08-18 17:10:59

回答

5

all方法與參數是預先Rails 3的API,並all(*args)相當於find(:all, *args),更是把:conditions選項:

students = Student.all(:conditions => "exam.date='01/01/2012'", 
         :order => "score DESC", 
         :limit => 5) 

儘管如此,通常優選使用Rails 3的可鏈式關係方法:

students = Student.where("exam.date='01/01/2012'").order('score DESC').limit(5) 
+0

近乎成功。我得到'沒有這樣的列:meeting.date'在處理where子句中的引用時,我需要做什麼不同嗎? – Decrypter 2012-08-18 17:21:58

+1

如果你想引用一個不同的表格,那麼你當然必須做一個'includes'或者'join'。無論如何,你必須對「全部」做同樣的處理。 – 2012-08-18 17:26:12

1

您應該使用#where方法:

students = Students.where('exam.date = ?', '01/01/2012').all(order: 'score DESC', limit: 5)