Model.all中的Where子句

Dec*_*ter 0 ruby ruby-on-rails

我是ruby的新手并拥有以下内容:

students = Student.all(:order => "score DESC",
            :limit => 5)
Run Code Online (Sandbox Code Playgroud)

但是我想在其中放入一个where子句,但是我收到错误"Unknown key:where".我的student表引用了一个examtable(t.references :exam),它有一个date字段,所以我需要做类似的事情:

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

如何whereall方法中使用子句并且是exam.date='01/01/2012'正确的?

And*_*all 5

all带参数的方法是一个pre-Rails 3 API,all(*args)相当于find(:all, *args),它采用以下:conditions选项:

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

通常优选使用Rails 3的可链接关系方法,但是:

students = Student.where("exam.date='01/01/2012'").order('score DESC').limit(5)
Run Code Online (Sandbox Code Playgroud)